jQuery停止异步运行的ajax [重复]
Posted
技术标签:
【中文标题】jQuery停止异步运行的ajax [重复]【英文标题】:jQuery stop ajax running asynchrously [duplicate] 【发布时间】:2016-03-15 09:23:31 【问题描述】:有没有办法防止 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 ...
【问题讨论】:
有办法,但这里真正的答案是,你永远不应该这样做! 在你的请求中,你必须做 async: false api.jquery.com/jQuery.ajax How do I return the response from an asynchronous call? 你永远不应该在浏览器上使用同步方法,因为冻结了主线程。要在 ajax 调用结束时“返回”一个值,您应该使用回调(或者,更进一步,返回一个承诺)。 【参考方案1】:将参数async: false
添加到ajax参数http://api.jquery.com/jquery.ajax/,ajax请求时浏览器将处于非活动状态,因此不是一个好的决定。
最好将if statement
移动到ajax成功函数,或者用if statement
制作函数并在成功函数中调用。
【讨论】:
我想你的意思是async: false
请将此标记为正确答案。【参考方案2】:
你在函数中使用了这个 sn-p,对吧?既然你有 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 的 promise,这里是 documentations
【讨论】:
以上是关于jQuery停止异步运行的ajax [重复]的主要内容,如果未能解决你的问题,请参考以下文章