菜鸟的 asp.net jsonp简单应用
2015-10-18 22:12
561 查看
简单介绍下,jsonp是一种用来进行跨域传输信息的方法,不是json的亲戚。
具体方法如下
客户端:
看起来只是像普通的ajax方法,不过里面加上了回传函数的方法名“jsonp”参数
这是用来用jsonp的形式回传信息用的,jquery会根据这个callback参数取其中的内容。
客户端方法:
注意在使用jsonp的时候要注意接收 ajax中写好的方法名参数,刚才上面写的是"jsonp:'callback'"所以在服务端要取callback
在回传的时候要以 ajax中的jsonp参数+(+结果值+) 的形式返回,
运行一下刚才的网页,会发现jquery会以
testPage?callback=jQuery110207458065936286827_1445175684208&studentCode=5&batch=2001&_=1445175684213 HTTP/1.1
的方式像服务端发送请求,此时jquery已经将callback值写好
callback=jQuery110207458065936286827_1445175684208
这样jsonp就可以正常工作了
注意:
我在刚用ajax的时候没有注意大小写,$.ajax()方法的参数名对大小写还是很敏感的,尤其是dataType,一定要Type大写data小写
否则会不起作用,怎么写都回传的是字符串格式。当时还疑惑为啥别人回传jsonp是json格式 result.message就可以取值了,而我写的
jsonp返回来的是callback(result:message),当时就是写的datatype的结果。
注意返回值一定是json格式,并且在断点调试的时候 获得的jsonp参数值也就是上面的callback,一定能够取到值类似"jQuery110207458065936286827_1445175684208",而不是 null,如果是null 那么说明你的ajax方法写的有问题,赶紧去贴个
方法再试试,否则会走很多弯路。
具体方法如下
客户端:
$.ajax({ url: "testPage.aspx", jsonp: "callback", type: "get", dataType: "jsonp", data: { "studentCode": "5", "batch": "2001" }, success: function (result) { alert(result.message); }, error: function () { alert("发送失败"); } });
看起来只是像普通的ajax方法,不过里面加上了回传函数的方法名“jsonp”参数
这是用来用jsonp的形式回传信息用的,jquery会根据这个callback参数取其中的内容。
客户端方法:
protected void Page_Load(object sender, EventArgs e) { string studentCode = Request.QueryString["studentCode"]; string batch = Request.QueryString["batch"]; string callback = Request.QueryString["callback"]; var msg = new {message="收到!" }; string result = new JavaScriptSerializer().Serialize(msg); Response.Write(callback+"("+result+")" ); }
注意在使用jsonp的时候要注意接收 ajax中写好的方法名参数,刚才上面写的是"jsonp:'callback'"所以在服务端要取callback
在回传的时候要以 ajax中的jsonp参数+(+结果值+) 的形式返回,
运行一下刚才的网页,会发现jquery会以
testPage?callback=jQuery110207458065936286827_1445175684208&studentCode=5&batch=2001&_=1445175684213 HTTP/1.1
的方式像服务端发送请求,此时jquery已经将callback值写好
callback=jQuery110207458065936286827_1445175684208
这样jsonp就可以正常工作了
注意:
我在刚用ajax的时候没有注意大小写,$.ajax()方法的参数名对大小写还是很敏感的,尤其是dataType,一定要Type大写data小写
否则会不起作用,怎么写都回传的是字符串格式。当时还疑惑为啥别人回传jsonp是json格式 result.message就可以取值了,而我写的
jsonp返回来的是callback(result:message),当时就是写的datatype的结果。
注意返回值一定是json格式,并且在断点调试的时候 获得的jsonp参数值也就是上面的callback,一定能够取到值类似"jQuery110207458065936286827_1445175684208",而不是 null,如果是null 那么说明你的ajax方法写的有问题,赶紧去贴个
方法再试试,否则会走很多弯路。
相关文章推荐
- asp.net 回发或回调参数无效的各种情况分析及解决办法
- ASP.NET5 Beta8
- ASP.NET程序单客户端(浏览器)登录的实现方案
- [ASP.NET MVC] 使用CLK.AspNet.Identity提供依权限显示选单项目的功能
- ASP.NET5 Beta8可用性
- 理解ASP.NET MVC的路由系统
- asp用户控件的使用
- asp.net的自定义控件和用户控件的区别
- ASP.NET比较常用的26个性能优化技巧
- 数据注解和验证 – ASP.NET MVC 4 系列
- ASP.NET比较常用的26个性能优化技巧
- ASP.NET开发者必备小技巧
- Asp.net(c#)常用文件操作类封装 移动 复制 删除 上传 下载等
- ASP.NET访问权限管理
- 编写通用的ASP防SQL注入攻击程序
- 截取指定长度文字,超出部分以特定字符代替
- ASP.NET - 编写让别人能读懂的代码
- ASP.NET - 使用MqSql数据库
- 快速开发之代码生成器(asp.net mvc4 + easyui + knockoutjs)
- IIS7.5安装后ASP+access数据库连接错误的问题解决办法