×

你是否了解ajax同步和异步的区别

作者:前端菜鸟2017.10.14来源:Web前端之家浏览:8965评论:0
关键词:ajax

对于ajax同步和异步,刚开始有点蒙,原以为自己了解很深了,看到别人的文章后,发现远远不够,哈哈。

同步:提交请求->等待服务器处理->处理完毕返回 这个期间浏览器不会做任何事
异步:请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

同步就是你叫我去吃饭,我听到后就跟你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
异步就是你喊了我一声去吃饭,然后自己就先走了去吃饭,我得到消息后可能马上追着你去吃饭,也可能等到下班后我自己再去吃饭。

所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。

举个生活中的例子:打电话时同步,发消息就是异步。
看看open方法的几个参数。

.open (http-method, url, async, userID, password)
(后面是帐号和密码,在禁止匿名访问的http页面中,需要用户名和口令)

首先看看异步处理方式:
其中async是一个布尔值。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式:Flase。

请求方式
分为GET与POST: GET 最为常见的HTTP请求,普通上网浏览页面就是GET。GET方式的参数请求直接跟在URL后,以问号开始。(JS中用window.location.search获得)。参数可以用encodeURIComponent进行编码,使用方式:
var EnParam = encodeURIComponent(param);
URL只支持大约2K的长度,即2048字符数;使用GET进行AJAX请求时候会缓存导致出现的页面不是正确的,一般方法加random参数值;ajax.send(null)。
POST - 向服务器提交数据用到。需要将form表单中的值先取出转换成字符串,用&符号连接,(同GET传参数一样);提交数据量2GB ;使用ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'),处理提交的字符串;ajax.send(strings),这个strings表示form中需要提交的内容,例如a=1&b=2类似这样的字符串。
同步与异步
ajax.open方法中,第3个参数是设同步或者异步。prototype等js类库一般都默认为异步,即设为true。先说下同步的情况下,js会等待请求返回,获取status。不需要onreadystatechange事件处理函数。而异步则需要onreadystatechange事件处理,且值为4再正确处理下面的内容。            

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/ajaxssldkjfksdjflksdjfl.html

网友评论文明上网理性发言 已有0人参与

发表评论: