[英]Ajax async false is deprecated?
我正在使用jQuery 1.7,並且為我的AJAX報告使用了async:false
,但是我了解到此功能已被棄用。
我需要使用回調,但這不起作用:
$("#form").submit(function(e) {
var cnf;
$.ajax({
type: "POST",
url: 'page.php',
data: $('#form').serialize(),
async: true,
success: function(responseText) {
if(responseText.indexOf('err') != -1) {
cnf = "error";
}
else {
cnf = "success";
}
return callBack( cnf );
},
error: function() {
cnf = "error";
return callBack( cnf );
}
});
if(cnf == "success")
{
alert('ok');
}
});
HTML:
<form id="form">
<input type="text" name="email">
<input type="submit">
</form>
如果我使用async: false
則可以使用。 使用callBack我在這里看到解決方案: 等待來自調用函數的jquery ajax回調
從文檔中:
從jQuery 1.8開始,不建議將async:false 與jqXHR($ .Deferred)一起使用
您沒有將其與jqXHR
一起jqXHR
。
也就是說,非異步HTTP對於JavaScript來說是可怕的,最好避免。 在回調中執行您的工作。 不要試圖將數據返回給調用函數,這樣它就可以完成工作。
從評論繼續:當您似乎不需要回調時 ,您似乎對它有些痴迷! :)
對現有代碼的簡單更改是丟棄cnf
並將代碼放入ajax調用的成功部分:
$("#form").submit(function (e) {
$.ajax({
type: "POST",
url: 'page.php',
data: $('#form').serialize(),
async: true,
success: function (responseText) {
if (responseText.indexOf('err') != -1) {
// Do something when it fails here
} else {
// Do something when it succeeds here!!!!
alert('ok');
// e.g. move on to "step 2"
}
},
error: function () {
// Do something when it fails here
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.