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

发布于 2022-09-02 23:34:03 字数 405 浏览 11 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

三月梨花 2022-09-09 23:34:03

你好:

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

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

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

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

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

这样试试

苍白女子 2022-09-09 23:34:03

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

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

仙气飘飘 2022-09-09 23:34:03

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

濫情▎り 2022-09-09 23:34:03

我之前出现这种情况是因为,脚本中存在多个ajax,并且都设置了jsonpCallback:"callback"导致的,将jsonpCallback改成不同的值就可以了

残龙傲雪 2022-09-09 23:34:03

1:你的jsonp请求,后端返回的数据是不是jsonp格式的?
"success_jsonpCallback" ."(".jsonData.")"
2.同时多个请求的时候可能出现这个问题

ま柒月 2022-09-09 23:34:03

借楼:问题找到原因了吗?遇到同样的问题了,但看了一圈答案好像都不是所找的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文