25
我不太明白如何使用jQuery的ajax函数的回调函数。使用JQuery调用JSONP函数ajax
我在JavaScript下面的代码:
try {
$.ajax({
url: 'http://url.of.my.server/submit?callback=?',
cache: false,
type: 'POST',
data: $("#survey").serialize(),
dataType: "jsonp",
timeout: 200,
crossDomain: true,
jsonp: 'jsonp_callback',
success: function (data, status) {
mySurvey.closePopup();
},
error: function (xOptions, textStatus) {
mySurvey.closePopup();
}
});
} catch (err) {
mySurvey.closePopup();
}
和服务器端(AppEngine上/ Python)的我得到的回调参数的值,并与
self.response.headers['Content-Type'] = 'application/json; charset=utf-8'
self.response.out.write(callback + '({"msg": "ok"});')
但随后作出回应我在浏览器上获得"Error: jQuery152042227689944248825_1317400799214 is not a function"
。
处理这个问题的正确方法是什么?现在我得到了我需要的结果,但是我知道这是不正确的事实正在困扰着我。
我猜POST参数被忽略。据我所知,JSONP只能发出GET请求,因为实际做的是在页面的头部创建一个
删除这一行:
或更换本线:
,因为目前你问jQuery来创建
callback=?
随机回调函数的名字,然后告诉jQuery的要改为使用jsonp_callback
。来源
2011-09-30 17:21:49 Joe
JSONP是被定义为服务器接受的,而jsonpCallback是JavaScript函数名是查询参数名称在客户端执行。
当你使用这些网址:
问号?在最后指示jQuery生成一个随机函数,而自动生成函数的预定义行为将仅调用回调 - 在这种情况下的成功函数 - 将json数据作为参数传递。
同样放在这里,如果您使用$ .getJSON用?占位符,它将生成一个随机函数,而自动生成函数的预定义行为将仅调用回调:
来源
2015-06-27 09:43:46
“自动生成的函数将只调用回调”,谢谢! – Eddy