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
动态随机函数名的问题,因为用过静态函数名,同样也会出现上述问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
你好:
之前使用过jsonp,你这种没有显式的指定回调方法的话,默认是随机生成!
但是这个方法名肯定不在你的js环境中~
我当时的做法是,把响应数据转为字符串,这样就是只会转化响应数据不管回调函数名了~
然后再把这个字符串转为json对象,这样你直接使用就没有问题了~
希望我的回答可以帮助到你,有问题请留言~
这样试试
因为我没怎么用过 jsonp,所以不是很清楚啥原因。猜测是在 ajax 调用时还没生成 callback 就已经调用完成了。尝试一下在
$(function() {})
之前定义函数,在$(function() {})
中或者加载完成之后手工调用 ajax 呢。如果方便,建议去 jsfiddle 写个 Demo
后台返回的json用动态随机函数名包起来
我之前出现这种情况是因为,脚本中存在多个ajax,并且都设置了
jsonpCallback:"callback"
导致的,将jsonpCallback改成不同的值就可以了1:你的jsonp请求,后端返回的数据是不是jsonp格式的?
"success_jsonpCallback" ."(".jsonData.")"
2.同时多个请求的时候可能出现这个问题
借楼:问题找到原因了吗?遇到同样的问题了,但看了一圈答案好像都不是所找的