我有一个非常简单的jQuery Ajax调用(下面).Ajax调用执行,我可以在Firebug Net面板中看到服务器返回200 OK并返回一个字符串"OK",因为它应该.但是,完成和失败功能不会触发!很沮丧!
("之前"和"之后"警报会触发.)
为了简单起见(以及作为一种调试技术),我已将其剥离为最裸露的骨架,但处理程序仍无法触发.我在这里看不到什么?
postUrl= "/mod/users/check_email/";
dataToPost= { email: "test@not.me" };
alert("before");
$.ajax
({
type: "POST",
url: postUrl,
data: dataToPost,
done: function()
{
alert("Success.");
},
fail: function()
{
alert("Sorry. Server unavailable. ");
},
}); // end Ajax call
alert("after");
Run Code Online (Sandbox Code Playgroud)
ade*_*neo 53
您需要链接done()和fail()函数,它们不是以下选项对象的一部分$.ajax:
$.ajax({
type: "POST",
url : postUrl,
data: dataToPost
}).done(function() {
alert("Success.");
}).fail(function() {
alert("Sorry. Server unavailable. ");
});
Run Code Online (Sandbox Code Playgroud)
此外,由于ajax是异步的,如果"after"警报出现在"success"警报之前,请不要惊讶.
Mus*_*enç 14
success并且error可以以这种方式使用回调.对于done和fail,你需要这样做:
$.ajax({
type: "POST",
url: postUrl,
data: dataToPost,
}).done(function() {
alert("Success.");
}).fail(function() {
alert("Sorry. Server unavailable. ");
});
Run Code Online (Sandbox Code Playgroud)
要么 :
$.ajax({
type: "POST",
url: postUrl,
data: dataToPost,
success: function() {
//code here
}
});
Run Code Online (Sandbox Code Playgroud)
小智 9
我有这样的设置:
$.ajax({
type: "POST",
url : postUrl,
data: dataToPost
}).done(function() {
alert("Success.");
})
Run Code Online (Sandbox Code Playgroud)
并遇到了同样的问题:完成功能不会触发.虽然我在设置之前已经成功地使它工作了很多次,但我花了一些时间来弄清楚发生了什么.经过调整后,我发现它还取决于Ajax调用返回的数据类型.最初,我配置了ajax调用以返回一些HTML.完成功能不起作用.在我将其更改回json(在Flask中使用jsonify)后,它再次起作用.