jquery 实现的josnp

参考:http://www.cnblogs.com/dudu/archive/2012/12/04/jquery-jsonp-attention.html

一个$.ajax 实例:

<script type="text/javascript">
     jQuery(document).ready(function(){
          $.ajax({
             type  : "get",
             async : false,
             url   : "ajax.ashx",
             dataType : "jsonp",
             jsonp : "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
             jsonpCallback :"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
             success : function(json){
                 alert(json);
                 alert(json[0].name);
             },
             error : function(){
                 alert('fail');
             }
         });
         var a = "firstName Brett";
         alert(a);
     });
</script>

上面用法有两个限制:

1.只能发 get 请求,get 请求的弊端是请求长度有限制

2.不会触发 $.ajax 的error callback

解决方法:

使用一个 jquery 插件 —— jquery-jsonp,https://github.com/jaubourg/jquery-jsonp

var originImgSrc = 'cnbogs-logo.gif';
$.jsonp({
    url   : '',
    data  : { imgSrc: originImgSrc },
    callbackParameter : "callback",
    success : function (newImgSrc, textStatus, xOptions) {
        console.log(xOptions.data.imgSrc);
    },
    error : function (xOptions, textStatus) {
    }
});

第1个需要注意的地方是 callbackParameter,如果没有专门的 callback 函数,一定要写上 "callback";

第2个需要注意的地方是在 success 回调函数中,直接通过变量名 originImgSrc 得到的是 undefined,需要通过 xOptions.data.imgSrc 获取。


原文地址:https://www.cnblogs.com/hdchangchang/p/3965348.html