首页 > jquery jsonp偶尔报错[jsonpCallback] is not a function

jquery jsonp偶尔报错[jsonpCallback] is not a function

    $.ajax({
        url: url,
        data: data,
        dataType: "jsonp",
        success: function (data) {
            // do sth.
        }
    });
    

如上,使用jQuery jsonp,大部分情况下没问题,但是控制台偶尔报jQuery18208278296771459281_1362854738133 is not a function的错误,刷新页面就又好了,一般出现在页面第一次打开的时候。
可以肯定的是,不是jQuery动态随机函数名的问题,因为用过静态函数名,同样也会出现上述问题。


后台返回的json用动态随机函数名包起来


  $.ajax({
        async:false,
        url: url,
        dataType: "jsonp",
        jsonpCallback:"jsonpHandler",//为jsonp请求指定一个回调函数名。这个值将用来取代jQuery自动生成的随机函数名。这主要用来让jQuery生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。你也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。
      success: function(json){}
       
    });

这样试试


因为我没怎么用过 jsonp,所以不是很清楚啥原因。猜测是在 ajax 调用时还没生成 callback 就已经调用完成了。尝试一下在 $(function() {}) 之前定义函数,在 $(function() {}) 中或者加载完成之后手工调用 ajax 呢。

如果方便,建议去 jsfiddle 写个 Demo


你好:

之前使用过jsonp,你这种没有显式的指定回调方法的话,默认是随机生成!
但是这个方法名肯定不在你的js环境中~

我当时的做法是,把响应数据转为字符串,这样就是只会转化响应数据不管回调函数名了~

然后再把这个字符串转为json对象,这样你直接使用就没有问题了~

希望我的回答可以帮助到你,有问题请留言~

【热门文章】
【热门文章】