您的位置:首页 > Web前端 > JQuery

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对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: