在jquery ajax中有一个参数
$.ajax({async: true, ...});
将值设置为true
和false
有什么区别?
当您需要在浏览器传递到其他代码之前完成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应用程序中,客户和服务器之间的交互是同步的。这意味着一个必须发生在另一个之后。如果客户单击链接,则会将请求发送到服务器,然后服务器会将结果发回。
由于请求丢失和挂起浏览器的危险,不建议将同步javascript用于(onbefore)卸载事件处理程序之外的任何操作,但如果在允许用户离开页面之前需要听取服务器的反馈,则同步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) {
// .....
}
});
也看看这篇文章
异步和同步AJAX调用
将其设置为false
会阻塞主线程(负责执行JavaScript、渲染屏幕等)并等待XHR完成。
这几乎总是一个糟糕的想法。用户不喜欢无响应的UI。
异步(默认值:true
)
类型:布尔
默认情况下,所有请求都是异步发送的(即,默认情况下设置为true
)。如果需要同步请求,请将此选项设置为false
。跨域请求和dataType: "jsonp"
请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,从而在请求处于活动状态时禁用任何操作从jQuery 1.8开始,不赞成将async: false
与jqXHR($.Deferred
)一起使用;您必须使用success/error/complete回调选项,而不是使用jqXHR对象的相应方法,如jqXHR.done()
。
这是来源。