繁体   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