有没有办法阻止ajax运行异步?
jQuery的:
var returnValue = false;
var appCount = 0;
$.ajax({
type: "GET",
url: "getBookedAppointmentCountByDoctorAndDate.php",
data: dataString,
success: function (response){
appCount = response;
//alert(appCount);
if(appCount >= 6){
returnValue = true;
}
}
});
return returnValue;
我的代码中有一个if语句,用于检查此函数的返回值。因为Ajax运行异步,所以if语句在设置返回值之前继续。用于返回php值的其他方法的任何想法或建议?
if (blah($(this)) === true) {
alert("blah");
} else { ...
答案 0 :(得分:2)
将参数async: false
添加到ajax参数http://api.jquery.com/jquery.ajax/,浏览器在ajax请求时将处于非活动状态,因此这不是一个好的决定。
最好将if statement
移动到ajax成功函数,或者使用if statement
创建函数并在成功函数中调用它。
答案 1 :(得分:1)
你在一个函数中使用这个片段,对吗?由于您有一个return
语句,我猜是这样的。
您无法返回将在异步任务中确定的值。你可以做的是将回调函数传递给这个函数,当确定值时,将值传递给该函数并调用它。
function myFunc(callback) {
var returnValue = false;
var appCount = 0;
$.ajax({
type: "GET",
url: "getBookedAppointmentCountByDoctorAndDate.php",
data: dataString,
success: function (response){
appCount = response;
//alert(appCount);
if(appCount >= 6){
returnValue = true;
}
callback(returnValue);
}
});
}
myFunc(function (value) {
console.log(value);
// do what ever you want with `value`
})
另一种方法是使用Promise
。如果你想使用jQuery的承诺,这里是documentations