Ajax async false已弃用?
我正在使用jQuery 1.7并且我使用async:false
来处理我的AJAX,但我已经了解到这个函数已被弃用。
我需要使用回调,但这不起作用:
$("#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:
如果我使用async: false
这是有效的。 使用callBack我在这里看到解决方案: 等待来自调用函数的jquery ajax回调
继续评论:当你似乎不需要任何回调时 ,你似乎有点痴迷于回调 ! 🙂
对现有代码的简单更改是丢弃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'); // eg move on to "step 2" } }, error: function () { // Do something when it fails here } }); });
从文档:
从jQuery 1.8开始,不推荐使用async:false 和jqXHR($ .Deferred)
您没有在jqXHR
使用它。
也就是说,非异步HTTP对JavaScript来说非常糟糕,最好避免使用。 在回调中或从回调中完成工作。 不要尝试将数据返回到调用函数,以便它可以完成工作。