同步请求和异步请求的差别(Ajax中的同步与异步)

一、web中的同步和异步:
(1)同步请求:顺序处理,即当我们向服务器发出一个请求时,在服务器没返回结果给客户端之前,我们要一直处于等待状态直至服务器将结果返回到客户端,我们才能执行下一步操作。例如普通的B/S模式就是同步请求(注:B/S模式 也即服务器与浏览器通信主要采用HTTP协议;通信方式为“请求——响应”,浏览器发出请求;服务器做出响应。)
(2)异步请求:并行处理,当我们向服务器发出一个请求时,在服务器没返回结果之前,我们还是可以执行其他操作。例如AJAX技术就是异步请求。

二、ajax中的同步与异步:
在ajax中其实也存在着同步请求的选项:

1:ajax的open()方法

用法:open(http-method,url,async,userID,password)
  • userID,password是帐号和密码,在禁止匿名访问的http页面中,需要用户名和口令。
  • ajax.open方法中,第3个参数是设同步或者异步。prototype等js类库一般都默认为异步,即设为true。
  • 在同步的情况下,js会等待请求返回,获取status。 不需要onreadystatechange事件处理函数。
  • 而异步则需要onreadystatechange事件处理,且值为4再正确处理下面的内容。

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

请求方式

  • 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中同步请求与异步请求的代码示例

1:同步请求示例

<script>
          	//同步请求示例
			function RequestByGet(nProducttemp, nCountrytemp) {
				var xmlhttp;
				if(window.XMLHttpRequest) {
					//isIE   =   false;  
					xmlhttp = new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					//isIE   =   true;  
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
 
				//Web page location.
				var URL = "http://www.baidu.com/;
				xmlhttp.open("GET", URL, false);
				//xmlhttp.SetRequestHeader("Content-Type","text/html; charset=Shift_JIS")
				xmlhttp.send(null);
				var result = xmlhttp.status;
				//OK
				if(result == 200) {
					document.getElementById("div_RightBarBody").innerHTML = xmlhttp.responseText;
				}
				xmlhttp = null;
			}
		</script> 

2:异步请求示例

<script>
		   //异步请求示例
			var xmlhttp;

			function RequestByGet(nProducttemp, nCountrytemp) {
				if(window.XMLHttpRequest) {
					//isIE   =   false;  
					xmlhttp = new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					//isIE   =   true;  
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
 
				//Web page location.
				var URL = "http://www.baidu.com/";
				xmlhttp.open("GET", URL, true);
				xmlhttp.onreadystatechange = handleResponse;
				//xmlhttp.SetRequestHeader("Content-Type","text/html; charset=UTF-8")
				xmlhttp.send(null);
			}
 
			function handleResponse() {
				if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
					document.getElementById("div_RightBarBody").innerHTML = xmlhttp.responseText;
					xmlhttp = null;
				}
			}
		</script> 

四、Ajax如何确定选择同步还是异步

  • Ajax中的同步选择是为极少数,既不能使用异步调用也不能重新载入整个页面的情况而准备的。
  • 而异步处理是为避免了服务器检索时候的延时问题,因为你的访客可以继续在页面进行操作,而要求的信息也可以在更新页面的同时得到处理。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ajax同步请求异步请求区别主要体现在请求方式和处理的方式上。 同步请求是指在发送请求后,页面会停止加载,直到服务器返回响应结果后才会继续加载。在同步请求,页面会一直等待响应返回,并且请求和响应是顺序进行的。同步请求的优点是可以确保请求和响应的顺序,但缺点是在等待响应时页面会出现卡顿或假死现象,用户体验较差。 异步请求是指在发送请求后,页面可以继续加载,而不会停止等待响应结果。在异步请求请求和响应是并行进行的,不会影响页面的加载和用户的操作。异步请求的优点是可以提高页面的响应速度和用户体验,但缺点是无法确保请求和响应的顺序。 在处理方式上,同步请求会阻塞浏览器的UI线程,用户无法进行其他操作,直到请求完成。而异步请求会在后台进行,不会阻塞浏览器,用户可以继续操作页面。在处理请求结果时,同步请求会直接返回请求的结果,而异步请求需要在回调函数处理请求的结果。 综上所述,ajax同步请求异步请求区别在于请求方式和处理的方式同步请求在等待响应时会阻塞页面加载,而异步请求可以在页面加载的同时进行请求同步请求可以确保请求和响应的顺序,但用户体验较差,而异步请求可以提高页面的响应速度和用户体验,但无法确保请求和响应的顺序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值