ajax的同步与异步
Posted 无所不能的齐天大圣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax的同步与异步相关的知识,希望对你有一定的参考价值。
问题:
页面进行加载实现 loadding的效果 时 ajax结束 之后loadding 出现 未达到效果
ajax的请求方法中分两种方式执行 同步和异步
同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执 行完毕后才会继续运行其他代码页面假死状态解除。
异步当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)
jquery的async:false,这个属性 ,默认是true:异步,false:同步。
同步:
$.ajax({
type: "post",
url: "path",
cache:false,
async:false,
dataType: ($.browser.msie) ? "text" : "xml",
success: function(data){
}
})
使用情况:
我们这一步请求的结果是下一步请求的前提,只有知道这一步请求的结果用户以后所做的才有意义
有了这个属性可以相对的减少代码运行书序问题,但是如果用的太多,页面假死次数太多。这样反而导致用户体验不佳
异步:
$.ajax({
type: "post",
url: "path",
async:true,
dataType: ($.browser.msie) ? "text" : "xml",
success: function(data){
}
})
ajax的优点:
传统的web应用允许用户填写表单,请求服务器处理传来的表单之后返回的是个新的网页,浪费带宽使得用户界面的相应比本地应用慢很多
快:
ajax值传递仅向服务器发送并取回必需的数据,客户端采用javascript处理来自服务器的响应,因为在服务器和浏览器之间交换的数据大量减少。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。
无刷新更新数据:
就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息
ajax的缺点:
AJAX干掉了Back和History功能,即对浏览器机制的破坏。
在ajax动态形成页面额情况下,无法回到前一个页面的状态,浏览器仅能记下历史记录中的静态页面。
用户希望通过浏览器的后退按钮来取消之前行为,ajax的请求是使界面做不到的。
解决办法: 在用户点击后退的按钮访问历史记录时,穿件和隐藏一个iframe 重现页面的变更。
AJAX的安全问题
出现在跨域站。
以上是关于ajax的同步与异步的主要内容,如果未能解决你的问题,请参考以下文章