jquery Ajax异步请求之session
2016-01-29 19:25
489 查看
写了一个脚本,如下:
$(function () { $("#btnVcode").click(function () { var receiveMobile = $("#Moblie").val();//手机号 var regMobile = /^1[3|4|5|7|8][0-9]\d{8}$/;//验证手机 if (!regMobile.test(receiveMobile)) { helper.dialogError('手机号格式不对'); return; } $.post('/Register/SendSms', { Moblie: receiveMobile }, function (jsonObj) { helper.checkAjaxStatus(jsonObj, function() { }); },'json'); }); });
手机号码验证通过后,会去后台调用发送短信接口,如果短信发送成功,会创建session ,而session的原理有一点是要在客户端浏览器创建cookie用来存ASP.NET_SessionId.
刚写完这段代码时担心Ajax异步请求不会创建本地cookie存sessionId. ~.~
因为后台返回的是一个Json字符串: {"status":0,"msg":"短信已发送,请注意查收!"}
纠结了一会,想怎么解决.
试试再说,经测试,竟然创建cookie了.(后台没有操作cookie,返回的结果是字符串,也没有用jquery去操作去生成cookie,然而,然而,却有了...有了...)
查看报文-->
POST http://localhost:1813/Register/SendSms HTTP/1.1
Host: localhost:1813
Connection: keep-alive
Content-Length: 18
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://localhost:1813 X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost:1813/Register/EpUser Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8
Moblie=***********
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
Set-Cookie: ASP.NET_SessionId=zbdy1ndgta2g02lysrfv1rhj; path=/; HttpOnly
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?ZDpcYmFja3VwXGRvY3VtZW50c1x2aXN1YWwgc3R1ZGlvIDIwMTNcUHJvamVjdHNcTFNVbmlvblxMU1VuaW9uLlNpdGVcUmVnaXN0ZXJcU2VuZFNtcw==?=
X-Powered-By: ASP.NET
Date: Fri, 29 Jan 2016 11:03:17 GMT
Content-Length: 53
{"status":0,"msg":"短信已发送,请注意查收!"}
真的有了.据分析,应该是
Session[Keys.smsVcode] = vcode;//短信发送成功才创建session
这行代码会 自动创建一个cookie并放入响应流(类似 Response.Cookies.Add(...) ),体现在报文的头部,浏览器收到报文,根据
Set-Cookie: ASP.NET_SessionId=zbdy1ndgta2g02lysrfv1rhj; path=/; HttpOnly
创建了cookie.
分析完毕.
相关文章推荐
- javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)
- HTML5中类jQuery选择器querySelector的高级使用 document.querySelectorAll.bind(document);
- jquery ajax 提交 FormData
- jQuery UI 实例 - 对话框(Dialog)
- jQuery的Ajax详解
- 带你学习JQuery:事件冒泡和阻止默认行为
- jquery.datatable.js与CI整合 异步加载(大数据量处理)
- jquery-mousewheel 插件
- jQuery ajax - serialize()方法和serializeArray() 方法
- jquery.dataTable.js 基础配置
- jquery.datatables中文语言设置
- 前端程序员应该知道的 15 个 jQuery 小技巧
- jquery.datatables中文使用说明
- web.py服务端,jquery ajax简单例子
- 简单实用jquery实现数字读秒的倒计时代码
- jquery移除、绑定、触发元素事件使用示例详解
- JQuery跨域请求的方法
- jquery方法
- JQuery知识总结
- 20+ 个很有用的 jQuery 的 Google 地图插件