Ajax在网页中最大的一个优点是它可以访问服务器上的信息而不需要重新加载网页。这意味着要检索或是更新信息的某一小个部分的时候,只需要从服务器端传送那一部分需要的信息而不需要重新下载整个网页。
Ajax可以通过两种方法访问服务器,即同步(脚本会停留并等待服务器发送回复然后再继续)和异步(脚本允许页面继续其进程并处理可能的回复)。
同步处理你的请求有一点像重新加载页面但是只需要下载要求的信息而不是整个页面。因此这一方法会比不使用Ajax要快一些因为信息的下载量要小,所以检索的速度就快了。但是要使用这个方法需要你的访客等待下载请求的出现。虽然你的访客已经习惯了等待下载整个页面,但是他们还不习惯在与网页互动的时候进行等待,因此除非你要求的信息是小到可以迅速下载完的,否则用户是不会耐心去等待的。
异步处理避免了服务器检索时候的延时问题,因为你的访客可以继续在页面进行操作,而要求的信息也可以在更新页面的同时得到处理。对于较大的请求来说,所需的响应时间较长,但是如果使用异步处理,那么访客不会特别意识到延时所带来的麻烦,因为他们的注意力仍然放在对页面的操作上。而对于那些瞬时的响应,你的访客甚至根本不会意识到服务器发出了这样的请求。
因此使用异步调用是Ajax中比较受青睐的方法,这种方法可以为访客的访问提供更便捷的服务,使得他们更愉悦,也避免了Ajax干扰其他页面的操作。
如果异步调用对于访客来说是可以提供比同步调用更方便的访问的话,那么为什么Ajax还要为我们提供同步调用呢?虽然异步调用的使用率几乎是百分之百,但是总是有一些例外情况的。在极少见的情况下,让你的访客在某一特定服务器端的处理过程结束前,让你的访客继续操作页面是没有什么意义的。如果是碰到这样的情况,或许根本不要使用Ajax而只是重新载入整个页面。Ajax中的同步选择是为极少数既不能使用异步调用也不能重新载入整个页面的情况而准备的。虽然这样的情况不多,但是它们确确实实存在,因此为以防万一Ajax需要准备同步调用。
对于很多初学者来说,容易掉入使用同步调用的误区,即便是在更适合使用异步调用的时候,他们还是一如既往地选择同步调用。造成这一情况的原因主要是因为同步调用更容易让人理解整个进程是怎样运行的。事实上,除了不需要等待响应以外,异步调用的工作原理和同步调用大同小异。
两者唯一的区别是在使用异步调用的时候,我们可以设置多个Ajax调用,这个调用是重叠的,即在前一个还没有响应的时候就可以发出第二个调用。这就异步调用比同步调用看上去要复杂一些的原因,因为你需要确定每个Ajax请求使用的都是单独的Ajax对象而不是所有的Ajaz请求都重复使用相同的对象。如果多个异步调用使用的是同一个对象那么响应处理器只会处理收到的第一个响应,而且会忽视其他后续响应。使用带有相同对象的重叠的Ajax调用,我们没有一个确凿的方法可以分辨出究竟哪个响应被处理了,也不知道该响应是否与发出的请求顺序一致。而为每个Ajax调用使用单独的对象,我们就可以获得相应的响应,响应处理器也能够准确对它们进行分辨。
异步使用Ajax对于大多数情况来说都是更好的选择。如果你只需从页面发出一个Ajax调用,那么,除了那个指定要怎样处理调用的参数以外,其编码方式和同步调用没有什么不同。在相同页面使用多个Ajax调用,唯一的复杂的地方是你需要为每个请求创建一个单独的Ajax对象。各种类型的Ajax库可以为你做好这样,唯一需要你编写异步调用代码的情况是你需要与同步调用不同的操作。
分享到:
相关推荐
详细介绍了AJAX的通信过程 同步或者异步 值得一看
调用方法:1 将下载好的Ajax js文件引用到页面 代码如下:<script src " js MyAjax js" type "text javascript">< script> 2 调用方法:(1)异步: MyAjax " 要调用的方法...
javascript发送ajax请求,获取返回值res,async 同步/异步 var res = sendRequest({ url : "1.php", //necessary method : "post", params : { param1 : "123", param2 : "234" }, async : false });
最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 而异步则这个AJAX代码...
原生ajax代码实现异步提交,用传统的ajax实现异步提交判断用户名是否存在,详细和完整的步骤,可运行
用法 XMLHttpRequest的用法 ajax同步和异步的区别
ajax 同步请求和异步请求的差异分析,需要的朋友可以参考下。
对新手学ajax 有帮助。希望大家能够喜欢和利用。
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死...
async在jquery ajax中是一个同步参数。本篇文章给大家介绍jq中的ajax async同步和异步,小伙伴跟着小编一起学习吧
通过ajax向后台发送和接收数据时,常常会出现同步异步问题。这篇文章给大家介绍Ajax同步和异步问题浅析,需要的朋友参考下
而在C++开发中,同步模式应该是主流,如果一定要使用异步模式加回调,可以参考Using IXMLHTTPRequest onreadystatechange from C++一文。 下面是采用异步模式获取远程主机上RSS文件的代码,关键的地方是设置一个回调...
AJAX访问PHP函数库AJASON的同步(非异步)版 这个版本里面的代码被我改过,从原先的异步ajax改成同步ajax 使代码写起来更方便.祥见examples
C#JS AJAX部分代码 用于前后台的数据同步
AJAX试题一些填空题目
下面小编就为大家带来一篇浅谈js的ajax的异步和同步请求的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现
jquery ajax 同步异步的执行 return值不能取得的解决方案,需要的朋友可以参考下。
最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 而异步则这个AJAX代码...
非常简单,采用HttpService封装,不用依赖BlazeDS,采用JSON数据格式(如果想用XML改造一下即可),可采用GET、POST两种方式与Java、.NET等服务端通信。