Web请求中同步与异步的区别

普通的B/S模式就是同步,而AJAX技术就是异步,当然XMLHttpReques有同步的选项。

同步:提交请求->等待服务器处理->处理完毕返回。这个期间客户端浏览器不能干任何事。

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕。

举个生动的例子吧:

同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。

异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

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

再举个例子,打电话时同步,发短信是异步。

ajax的open()方法

用法:open(http-method,url,async,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进行编码,使用方式:

1 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类似这样的字符串。

程序示例

同步传输模式:

 1 function RequestByGet(nProducttemp,nCountrytemp)
 2 {
 3     var xmlhttp
 4     if (window.XMLHttpRequest)  
 5     {  
 6          //isIE   =   false;  
 7          xmlhttp   =   new   XMLHttpRequest();  
 8     }  
 9     else if (window.ActiveXObject)
10     {  
11          //isIE   =   true;  
12          xmlhttp   =   new   ActiveXObject("Microsoft.XMLHTTP");  
13     }
14                  
15     //Web page location.
16     var URL="http://www.baidu.com/;
17     xmlhttp.open("GET",URL, false);
18     //xmlhttp.SetRequestHeader("Content-Type","text/html; charset=Shift_JIS")
19     xmlhttp.send(null);
20     var result = xmlhttp.status;
21    
22     //OK
23     if(result==200)
24     {
25         document.getElementById("div_RightBarBody").innerHTML=xmlhttp.responseText;
26     }
27     xmlhttp = null;
28 }

异步传输模式:

 1 var xmlhttp
 2 function RequestByGet(nProducttemp,nCountrytemp)
 3 {
 4     if (window.XMLHttpRequest)  
 5     {  
 6          //isIE   =   false;  
 7          xmlhttp   =   new   XMLHttpRequest();  
 8     }  
 9     else if (window.ActiveXObject)
10     {  
11          //isIE   =   true;  
12          xmlhttp   =   new   ActiveXObject("Microsoft.XMLHTTP");  
13     }
14                  
15     //Web page location.
16     var URL="http://www.baidu.com/";
17     xmlhttp.open("GET",URL, true);
18     xmlhttp.onreadystatechange = handleResponse;
19     //xmlhttp.SetRequestHeader("Content-Type","text/html; charset=UTF-8")
20     xmlhttp.send(null);  
21 }
22 function handleResponse()
23 {
24     if(xmlhttp.readyState == 4 && xmlhttp.status==200)
25     {
26         document.getElementById("div_RightBarBody").innerHTML=xmlhttp.responseText;
27         xmlhttp = null;
28     }
29 }

原文链接:http://www.nowamagic.net/program/program_SynchronousAndAsynchronous.php

转载于:https://www.cnblogs.com/wangweiabcd/p/3885989.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大地形pawn抖动问题

在pawn的event tick里调用下面函数即可

php蓝牙连接不上,蓝牙音响连接不上手机怎么办 两种方法轻松解决连接问题

我们听歌一般用耳机和音响。现在蓝牙音频越来越普及,但毕竟是无线产品。信号不时中断或不连接是正常的。蓝牙音频连不上手机真的很头疼。出现这种情况的原因是什么,如何解决?为什么蓝牙音频不能连接到手机1.蓝牙音频没有进入匹配状态&#xf…

Bootstrap页面布局16 - BS导航菜单和其响应式布局以及导航中的下拉菜单

代码&#xff1a; <div classcontainer-fluid><h2 classpage-header>导航</h2><!--    .navrbar navbar-fixed-top:导航固定显示在顶部&#xff0c;对应的navbar-fixed-bottom:导航固定显示在页面底部    .brand:提示文字或者主题    .active…

HMI使用自定义控件流程

1.定义控件ID号&#xff0c;以FO_COMP_CUSTOM为基数#define SCENEENTITY_SIMULATOR_SHAPEFO_COMP_CUSTOM 2102.编写控件类&#xff0c;并继承于CFOBitmapShape 具体实现可以在程序中找例子&#xff0c;重新OnDraw3d这个虚函数来实现控件的绘制3. 在MainFrm.cpp中&#xff0c;在…

nginx 怎么重新编译安装mysql,centos 下 编译安装 nginx + mysql + php 服务

centos 下编译安装nginx mysql php 服务1、安装nginx1.1、安装依赖包yum install wget make gcc gcc-c pcre-devel openssl-devel -y yum install ncurses-devel libtool zilib-devel -y1.2、创建www用户useradd www -s /sbin/nologin -M1.3、创建目录mkdir -p /var/log/ngin…

hdu 1874(Dijkstra + Floyd)

链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1874 畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 27692 Accepted Submission(s): 10019 Problem Description某省自从实行了很多年…

php原生session,利用Memcached在php下实现session机制 替换PHP的原生session支持

方法文件session实现文件:memcachedsession.php实现原理(也是PHP内部session的实现原理)&#xff1a;1.先判断客户端有没有sessionid&#xff0c;a.没有就添加一个sessionid给客户端&#xff0c;通常是32位hash码&#xff0c;同时初始化一个数组做session容器b.如果客户端有ses…

Web 开发中很实用的10个效果【附源码下载】

在工作中&#xff0c;我们可能会用到各种交互效果。而这些效果在平常翻看文章的时候碰到很多&#xff0c;但是一时半会又想不起来在哪&#xff0c;所以养成知识整理的习惯是很有必要的。这篇文章给大家推荐10个在 Web 开发中很有用的效果&#xff0c;记得收藏&#xff01; 超炫…

深入分析MFC文档视图结构(项目实践)

文档视图结构&#xff08;Document/View Architecture&#xff09;是MFC的精髓&#xff0c;也是Observer模式的具体实现框架之一&#xff0c;Document/View Architecture通过将数据和其表示分开&#xff0c;提供了很好的数据层次和表现层次的解耦。然而&#xff0c;虽然我们使用…

蓝图中实现人物移动2

从Pawn继承一个蓝图类并编写下面代码&#xff0c;并添加摄像机组件 1. 实现前后移动2. 实现左右移动3. 实现鼠标移动方向4. 实现鼠标俯仰

php 提取前一百个字,如何在PHP中提取字符串的前100個字符?

I am looking for a way to pull the first 100 characters from a string variable to put in another variable for printing.我正在尋找一種方法&#xff0c;從字符串變量中提取前100個字符&#xff0c;並將其放入另一個變量中進行打印。Is there a function that can do th…

实现两个pawn的切换

在playercontroller里面编写下面代码并把两个pawn放置到场景中

zoj2008 最短路

题意&#xff1a;给你n个点的有向图&#xff0c;从1点到其他所有点又从其他点回到1点的最短路。 思路&#xff1a;可以求一次从1点出发的最短路&#xff0c;再反向建图&#xff0c;再求一次从1出发的最短路&#xff0c;把两次的结果加起来就是题目所求。由于边比较多&#xff0…

steam程序员php玩的游戏,Steam:又一款烧脑的编程游戏上线,宅男回家了也要开心加班!...

原标题&#xff1a;Steam&#xff1a;又一款烧脑的编程游戏上线&#xff0c;宅男回家了也要开心加班&#xff01;要是小伙伴们喜欢什么解谜、编程类游戏&#xff0c;相信Steam上的《程序员升职记》应该都是绿了的游戏&#xff0c;这款给宅男们设计智力游戏能让你享受到从底层到…

模式(一)javascript设计模式

模式有三种&#xff1a;Architectural Pattern、Design Pattern、Coding Pattern&#xff0c;即&#xff1a;框架模式、设计模式、编程模式。本文主要讲解javascript中的设计模式&#xff0c;好的设计模式能够提高代码的重用性&#xff0c;可读性&#xff0c;使代码更容易的维护…

matlab如何提高运算速速,如何提高以下程序的运算速度及有选择性的保存数据?...

多谢管理员math的关注。“空位随机游走过程”有英语我也不知道如何说。只知道“空位”叫做&#xff1a;vacancy我解解释一下整个过程。不过过程比较长一些&#xff01;为了说明问题&#xff0c;我就举个例子如&#xff1a;Fe-Mg二元合金&#xff0c;其中Mg占3%&#xff0c;空位…

GPS经纬度换算成XY坐标

/// <summary>///GPS经纬度换算成x,y坐标 /// </summary>/// <param name"l"> 精度 </param>/// <param name"B"> 纬度 </param>/// <param name"xc"> X坐标 </param>/// <param na…

Valid Sudoku

这道题是个细节实现题&#xff0c;只要把valid sudoku满足的三个条件判断一下即可。 valid sudoku需满足下列三个条件&#xff1a; 1&#xff09;每一行数字1~9有且只出现一次。2&#xff09;每一列数字1~9有且只出现一次。3&#xff09;对于每个3*3的sub-box&#xff08;用i3、…

CosiWorksNew

CMainFrameCBCGPRibbonBar m_wndRibbonBar; 工具栏CreateRibbonBar() 构建工具栏CWProjectBar m_wndProjectBar; 左侧的工程窗口CWModelLibBar m_wndModellibBar; 左侧的模型窗口ShowControlBar(CBCGPDockingControlBar*, BOOL, BOOL, BOOL) 显示或隐藏左侧窗…

make xdb file.php,SCWS入门使用指南

B 结合php使用要想在php中使用scws分词工具&#xff0c;必须安装php扩展&#xff0c;并且必须要求php与scws安装在同一台机器。cd /usr/local/src/scws-1.2.2/usr/local/php-5.3.8/bin/phpize ./configure --with-scws/usr/local/scws --with-php-config/usr/local/php-5…