jquery的ajax实现跨域调用---jsonp
2013-04-12 17:38
477 查看
<script src="../js/jquery-1.8.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
$.ajax({
type : "get",
async:false,
url: "http://test.panjiayuan.com/test/jsonp.ashx", //跨域请求的地址
dataType : "jsonp", //传输的数据类型
jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,
success : function(json){
alert(json);
alert(json.name);
},
error:function(){
alert('fail');
}
});
});
当成功后执行的success方法的内部原理应该就是 接受到了后台返回的success_jsonpCallback函数并且把参数传递给了该方法中的参数data,如果页面中也刚好有一个定义了的回调函数,那么程序会先调用定义的这个回调函数,后再去调用ajax的success方法如: function success_jsonpCallback(data) {
alert('11');
alert(data);
}
</script>
一般处理程序接收到传递来的回调函数名称,并且要把这个函数返回到前台,返回的方式就是直接调用了这个自定义的回调函数,所以当执行完成后台的程序后返回到前台的时候,就直接调用了回调函数的执行。如上一遍中的写法
后台一般处理程序:
string callbackFunName = context.Request["callbackparam"];
context.Response.Write(callbackFunName + "({ \"name\":\"true\"} )");
注意:后台传递json格式
1 键必须是字符串 ,值如果是 字符串也必须加上 双引号 如果是数字那就可以不必要 如果值为数字 那么前台获取
到的也是数字格式的值
2 有时候值如果为空 直接用双引号 错
3 值中不能有\n 或者是\r\n这样的特殊字符出现,这样会导致返回的json的值中换行 就不是json对象了
4 单双引号嵌套要合理 如果其中出现了单引号和单引号嵌套侧位错误,双引号 同理 所以对于请求来的字符串双引号
比较多一般把其中的单引号替换为空,在外面使用单引号
5 如果值是数组 那么数据中不能为空数组,否则错
6 jsonp 指定的回调函数中只能有一个接受值的参数 多了不认(即使自己在回调函数中指明有多个参数), 所以如
果有多个参数 侧要组成json对象
<script type="text/javascript">
$(function(){
$.ajax({
type : "get",
async:false,
url: "http://test.panjiayuan.com/test/jsonp.ashx", //跨域请求的地址
dataType : "jsonp", //传输的数据类型
jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,
success : function(json){
alert(json);
alert(json.name);
},
error:function(){
alert('fail');
}
});
});
当成功后执行的success方法的内部原理应该就是 接受到了后台返回的success_jsonpCallback函数并且把参数传递给了该方法中的参数data,如果页面中也刚好有一个定义了的回调函数,那么程序会先调用定义的这个回调函数,后再去调用ajax的success方法如: function success_jsonpCallback(data) {
alert('11');
alert(data);
}
</script>
一般处理程序接收到传递来的回调函数名称,并且要把这个函数返回到前台,返回的方式就是直接调用了这个自定义的回调函数,所以当执行完成后台的程序后返回到前台的时候,就直接调用了回调函数的执行。如上一遍中的写法
后台一般处理程序:
string callbackFunName = context.Request["callbackparam"];
context.Response.Write(callbackFunName + "({ \"name\":\"true\"} )");
注意:后台传递json格式
1 键必须是字符串 ,值如果是 字符串也必须加上 双引号 如果是数字那就可以不必要 如果值为数字 那么前台获取
到的也是数字格式的值
2 有时候值如果为空 直接用双引号 错
3 值中不能有\n 或者是\r\n这样的特殊字符出现,这样会导致返回的json的值中换行 就不是json对象了
4 单双引号嵌套要合理 如果其中出现了单引号和单引号嵌套侧位错误,双引号 同理 所以对于请求来的字符串双引号
比较多一般把其中的单引号替换为空,在外面使用单引号
5 如果值是数组 那么数据中不能为空数组,否则错
6 jsonp 指定的回调函数中只能有一个接受值的参数 多了不认(即使自己在回调函数中指明有多个参数), 所以如
果有多个参数 侧要组成json对象
相关文章推荐
- 使用 jQuery 集成的 $.ajax 实现 JSONP 跨域调用
- 使用Ajax、jsonp实现跨域请求调用心知天气API
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- SpringMVC与jQuery,ajax/jsonp实现跨域传输数据
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- PHP中运用jQuery的Ajax跨域调用实现代码
- ajax跨域jsonp及jquery中的调用问题
- 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法
- jquery+ajax+jsonp实现跨域请求
- MVC+JQuery实现跨域Jsonp调用Js
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 利用jquery的ajax实现跨域,内部其实是jsonp协议了,不是XHRhttp协议
- jquery+ajax+jsonp实现跨域请求
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- jquery jsonp 调用jersey实现跨域访问
- JQuery,ajax,jsonp,struts实现跨域
- jQuery+Ajax+jsonp+java实现跨域访问