在jQuery的AJAX有一个参数
$.ajax({async: true, ...});
是什么设置true
和false
值之间的差异?
您可以设置异步为假,当你需要浏览器传递给其它代码之前完成Ajax请求:
<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
$ .ajaxrequest in jQuery is set to asynchronous
。变量名是异步和值设置为true。这给了我一个小的混乱,以及时,首先了解它,让我们过目一下。
同步(异步:假) - 脚本停止,等待服务器继续之前发回的答复。有一些情况下同步Ajax是强制性的。
在标准的Web应用程序,客户和服务器之间的交互是同步的。这意味着,一个有一后发生。如果客户在点击一个链接,请求被发送到服务器,然后将结果发送回。
由于要求的危险迷路和悬挂的浏览器,不建议外的(onbefore)卸载事件处理任何同步JavaScript的,但如果你需要听到从服务器返回之前,你可以允许用户导航离开从页,同步JavaScript是不只是你最好的选择。
$.ajax({
url: "file.php",
type: "POST",
async: false,
success: function(data) {
// .....
}
});
异步(异步:真) - 在脚本允许页面继续被处理,如果当它到达将处理答复。如果有什么不顺心的请求和/或文件传输,程序仍然要认识到这个问题,并从中恢复的能力。处理异步地避免了延迟,同时从服务器检索正在发生,因为你的访客可以继续与网页和请求的信息交互将更新页面,当它到达的响应进行处理。
$.ajax({
url: "file.php",
type: "POST",
async: true,
success: function(data) {
// .....
}
});
也看看这篇文章
将它设置为false
块主线程(负责执行JavaScript,呈现在屏幕等),并等待XHR完成。
这几乎总是一个可怕的想法。用户不喜欢没有响应的用户界面。
异步(默认:true
)
类型:Boolean
默认情况下,所有的请求都发送异步(即这是默认设置为true
)。如果您需要同步请求,将该选项设置为false
。跨域请求和dataType: "jsonp"
请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,禁用任何行动,同时请求被激活。在jQuery 1.8,async: false
与jqXHR($.Deferred
)使用已经过时;您必须使用成功/错误/完整的呼选项,而不是jqXHR对象的相应方法,如jqXHR.done()
。
这里是Source。