簡體   English   中英

不建議使用Ajax異步false?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM