我有一个运行2个AJAX调用的脚本,这是第一次检查数据库中是否存在记录。如果是这样,则不应该继续,脚本应该停止。第二个提交工作。在继续使用脚本之前等待AJAX响应
我的问题是,在第一次AJAX调用返回之前,该作业正在提交。我的代码看起来是这样的:
if (recordid) {
var request = $.ajax({
context: document.body,
url: URLGOESHERE,
data: {
recordID: recordid
},
success: function(data){
if (data.Response == "Success") {
var noresults = data.Results;
if (noresults > 0){
alert('this record id already exists!');
return false;
}
} else {
alert('an error occured');
return false;
}
}
});
} else {
alert('enter a record id');
return false;
}
// second ajax call goes here, which gets called regardless of the output of the ajax call above
这是因为请求是异步的。将第二个AJAX调用*放入第一个调用的'success'处理程序中。还要注意,在'success'处理程序中使用'return'是多余的。 –
为你的'$ .ajax'添加参数'async:false',或者,更好的办法是将第二个请求放在'success'回调中。 – eisbehr
@eisbehr不,永远不要这样做。 'async:false'是*难以置信的*糟糕的做法。当请求正在进行时,它会阻止UI线程表单更新,这使得它看起来像浏览器崩溃了。这是大多数浏览器现在抛出关于其使用的控制台警告的原因。 –