在jquery ajax中有一个参数
$.ajax({async: true, ...});
将值设置为true
和false
之间有什么区别?
答案 0 :(得分:72)
如果您需要在浏览器传递到其他代码之前完成ajax请求,请将 async 设置为 false :
<script>
// ...
$.ajax(... async: false ...); // Hey browser! first complete this request,
// then go for other codes
$.ajax(...); // Executed after the completion of the previous async:false request.
</script>
<强> By default, the
$。AJAX request in jQuery is set to asynchronous
即可。变量名称为async,值设置为true。在第一次了解它时,这给我带来了一点困惑,所以让我们来看看它。
同步(async:false) - 脚本停止并等待服务器在继续之前发回回复。在某些情况下,同步Ajax是强制性的。
在标准Web应用程序中,客户与服务器之间的交互是同步的。这意味着必须在另一个之后发生。如果客户单击链接,则会将请求发送到服务器,然后服务器将结果发回。
由于请求丢失和挂起浏览器的危险,建议不要在(onbefore)卸载事件处理程序之外的任何内容使用同步javascript,但是如果您需要在允许用户之前从服务器回听要离开页面,同步Javascript不仅是您的最佳选择。
$.ajax({
url: "file.php",
type: "POST",
async: false,
success: function(data) {
// .....
}
});
异步(async:true) - 脚本允许继续处理页面,并在其到达时处理回复。如果在请求和/或文件传输中出现任何问题,您的程序仍然能够识别问题并从中恢复。 异步处理可以避免在从服务器进行检索时发生延迟,因为访问者可以继续与网页进行交互,并且处理所请求的信息将会在响应时更新页面。
$.ajax({
url: "file.php",
type: "POST",
async: true,
success: function(data) {
// .....
}
});
另外看一下这篇文章
答案 1 :(得分:6)
将其设置为false
会阻止主线程(负责执行JavaScript,渲染屏幕等)并等待XHR完成。
这几乎总是一个糟糕的主意。用户不喜欢没有响应的用户界面。
答案 2 :(得分:1)
异步(默认:true
)
类型:布尔值
默认情况下,所有请求都是异步发送的(即默认情况下设置为true
)。如果需要同步请求,请将此选项设置为false
。跨域请求和dataType: "jsonp"
请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作。 从jQuery 1.8开始,不建议将async: false
与jqXHR($.Deferred
)一起使用;您必须使用成功/错误/完成回调选项,而不要使用jqXHR对象的相应方法,例如jqXHR.done()
。
这里是Source。