【发布时间】:2011-11-28 15:41:04
【问题描述】:
我不太明白如何处理 jQuery 的 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 请求,因为实际上所做的是在页面的 head 部分创建一个
标签: javascript jquery ajax jsonp