jquery ajax完成函数没有触发
我有一个非常简单的jQuery Ajax调用(下面)。 执行Ajax调用,我可以在Firebug Net面板中看到服务器返回200 OK并返回一个字符串“OK”。 但是,完成和失败function都不会触发! 很沮丧!
(“之前”和“之后”警报会触发。)
为了简单起见(以及作为一种调试技术),我已将其剥离为最裸露的骨架,但处理程序仍然无法触发。 我在这里看不到什么?
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");
您需要链接done()
和fail()
函数,它们不是$.ajax
使用的options对象的一部分:
$.ajax({ type: "POST", url : postUrl, data: dataToPost }).done(function() { alert("Success."); }).fail(function() { alert("Sorry. Server unavailable. "); });
此外,由于ajax是异步的,如果“after”警报出现在“成功”警报之前,请不要惊讶。
success
和error
回调可以这种方式使用。 对于done
和fail
,您需要:
$.ajax({ type: "POST", url: postUrl, data: dataToPost, }).done(function() { alert("Success."); }).fail(function() { alert("Sorry. Server unavailable. "); });
要么 :
$.ajax({ type: "POST", url: postUrl, data: dataToPost, success: function() { //code here } });
你还需要dataType:’json’。 我有这个问题,我把它设置为’字符串’,它不会触发完成方法
我有这样的设置:
$.ajax({ type: "POST", url : postUrl, data: dataToPost }).done(function() { alert("Success."); })
并遇到了同样的问题:完成function不会触发。 虽然我在设置之前已经成功地使它工作了很多次,但我花了一些时间来弄清楚发生了什么。 经过调整后,我发现它还取决于Ajax调用返回的数据类型。 最初,我配置了ajax调用以返回一些HTML。 完成function不起作用。 在我将其更改回json(在Flask中使用jsonify)后,它再次起作用。