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