B/S状态(同步)AJAX技术(异步)

同步(Synchronization)。它是最常见的click-refresh状态,或提交一个表单,然后整个页面被刷新.

异步(Asynchrony)。当前非常热的AJAX就是典型样例,提交请求返回对象是不可见的层,然后用js依据返回数据,改变当前页面显示。譬如google map....

GET

最为常见的HTTP请求。普通上网浏览页面就是GET。

GET方式的參数请求直接跟在URL后,以问号開始。(JS中用window.location.search获得)。參数能够用encodeURIComponent进行编码。使用方式:

var EnParam = encodeURIComponent(param);

URL仅仅支持大约2K的长度,即2048字符数;使用GET进行AJAX请求时候会缓存导致出现的页面不是正确的,一般方法加random參数值;ajax.send(null)。

POST

向server提交数据时使用。

须要将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再正确处理以下的内容。

(注:文中的 ajax 表示XMLHTTP请求对象。)

1 //同步传输模式

2

3 function RequestByGet(nProducttemp,nCountrytemp)

4 {

5     var xmlhttp

6

7     if (window.XMLHttpRequest)

8     {

9          //isIE   =   false;

10          xmlhttp   =   new   XMLHttpRequest();

11     }

12     else if (window.ActiveXObject)

13     {

14          //isIE   =   true;

15          xmlhttp   =   new   ActiveXObject("Microsoft.XMLHTTP");

16     }

17

18     //Web page location.

19     var URL="http://www.baidu.com/;

20     xmlhttp.open("GET",URL, false);

21     //xmlhttp.SetRequestHeader("Content-Type","text/html; charset=Shift_JIS")

22     xmlhttp.send(null);

23     var result = xmlhttp.status;

24

25     //OK

26     if(result==200)

27     {

28         document.getElementById("div_RightBarBody").innerHTML=xmlhttp.responseText;

29     }

30     xmlhttp = null;

31 }

32

33

34 //异步传输模式

35 var xmlhttp

36

37 function RequestByGet(nProducttemp,nCountrytemp)

38 {

39     if (window.XMLHttpRequest)

40     {

41          //isIE   =   false;

42          xmlhttp   =   new   XMLHttpRequest();

43     }

44     else if (window.ActiveXObject)

45     {

46          //isIE   =   true;

47          xmlhttp   =   new   ActiveXObject("Microsoft.XMLHTTP");

48     }

49

50     //Web page location.

51     var URL="http://www.baidu.com/";

52     xmlhttp.open("GET",URL, true);

53     xmlhttp.onreadystatechange = handleResponse;

54     //xmlhttp.SetRequestHeader("Content-Type","text/html; charset=UTF-8")

55     xmlhttp.send(null);

56 }

57

58 function handleResponse()

59 {

60     if(xmlhttp.readyState == 4 && xmlhttp.status==200)

61     {

62         document.getElementById("div_RightBarBody").innerHTML=xmlhttp.responseText;

63         xmlhttp = null;

64     }

65 }

66

总结:

Get是向server取数据的一种请求。而Post是向server提交数据的一种请求

Get是获取信息,而不是改动信息。类似数据库查询功能一样,数据不会被改动

Get请求的參数会跟在url后进行传递。请求的数据会附在URL之后,以?号切割URL和数据传输。參数之间以&号相连,%XX中的XX为该符号以16进制表示的ASCII,假设数据是英文字母/数字,原样发送,假设是空格,转换为+。假设是中文/其它字符,则直接把字符串用BASE64加密。

Get传输的数据有限制大小。由于GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。

GET请求的数据会被浏览器缓存起来。username和password将明文出如今URL上,其它人能够查到历史浏览记录,数据不太安全。在server端。用Request.QueryString来获取Get方式提交来的数据

Post请求则作为http消息的实际内容发送给webserver,数据放置在HTML Header内提交,Post没有限制提交的数据。Post比Get安全。当数据是中文或者不敏感的数据,则用get,由于使用get。參数会显示在地址,对于敏感数据和不是中文字符的数据,则用post

POST表示可能改动变server上的资源的请求,在server端。用Post方式提交的数据仅仅能用Request.Form来获取

使用get方式提交的问题:

  1. 怎样创建在大部分浏览器中都能执行的XMLHttpRequest对象.
  2. 使用get请求时存在缓存问题
  3. 中文乱码问题

当中,第一个问题,在《XMLHttpRequest 对象具体解释》一文中已经解决;

对于第二个问题,产生的原因是:

get请求会每次訪问缓存,看当中是否有匹配的url,假设有,则返回缓存中的url,假设没有,则向server发出请求.

解决方式:

1.在url上加个动态的变化參数,以求每次訪问的是不同的url,这样每次都会向server发出新的请求.

对于第三个问题,我们首先来看下产生乱码的原因:

xmlHttp返回的数据默认是uft-8,假设client页面是gb2312或其它编码,就会产生乱码

解决方式:

1.若client是gb2312,则在输出时,指定输出流编码

2.client和server端都使用utf-8编码

3.务必使用encodeURIComponent方法对參数进行编码

使用post方式提交的问题:

1.使用POST方式传递參数的使用方法:

浏览器会把各表单中字段元素及其数据作为Http消息的实体内容发送给Webserver.

參数是随着send方法发送出去的,如send(data).,server端字符集设置採用request.setCharacterEncoding("UTF-8");语句。

做到clientHTML编码与server端request.setCharacterEncoding("UTF-8");保持一致.server端获取參数时,须要使用Request.Form[data].

2.对于请求是key-value对的形式传递数据,能够採用POST方式,对于复杂的參数能够考虑使用JSON或者XML方式传递。

3.要注意设置Content-Type的内容为application/x-www-form-urlencoded,设置此内容是为了确保server知道实体中有參数变量.

4.选择合适方法处理server的响应。

下一篇将介绍ajax异步结合伪静态请求数据返回状态处理业务.

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-10-13 13:25:08

B/S状态(同步)AJAX技术(异步)的相关文章

同步异步的概念(ajax是异步,C#是同步)

进程同步用来实现程序并发执行时候的可再现性. 一.进程同步及异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 sendmessage.该函数发送一个消

325 AJAX介绍,XMLHttpRequest对象,实现Ajax的异步交互步骤,服务器端通信状态

* Asynchronous JavaScript and Xml \* 直译中文 - javascript和XML的异步 \* (不严格的定义)客户端与服务器端进行交互,而无需刷新当前页面的技术,称之为Ajax. * Ajax实现的是B/S架构下的异步交互 * 实现异步交互的技术: \* <iframe src="">元素 * 同步与异步的区别 * 同步交互 \* 执行速度相对比较慢 \* 响应的是完整的HTML页面 * 异步交互 \* 执行速度相对比较快 \* 响应的是

ajax,同步请求 ,异步请求

同步请求,异步请求 ,这样的字眼我想既然你能看到这篇文章并且点击进来 ,说明我们应该是听过他的,并且 听得次数还不少,说到异步请求 ,首先我想到就是ajax, ajax的问题一会再说,今天我突然想到,我们平时都会 尽量的去 用ajax使用异步 的方式请求数据, 那么你知道到底是同步请求的数据更快,还是异步请求的数据更快吗? 异步传输是面向字符的传输,它的单位是字符:而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的. 同步传输通常要比异步传输快速得多.接收

使用AJAX技术发送异步请求,HTTP服务端推送

使用AJAX技术发送异步请求 什么是AJAX AJAX指一步Javascript和XML(Asynchronous JavaScript And XML),它是一些列技术的组合,简单来说AJAX基于XMLHttpRequest让我们在不重载页面的情况下和服务器进行数据交换. 加上JavaScript和DOM(Document Object Model,文档对象模型),我们就可以在接收到响应数据后局部更新页面.XML指的是数据的交互模式,可以是纯文本(Plain Text).HTML或JSON.

Ajax技术(异步请求)

Ajax技术 Ajax全称为Asynchronous Javascript And XML,它的核心技术是 XMLHttpRequest对象.指的是异步JavaScript和XML技术,是WEB 2.0中的一项关键技术,它允许把用户和WEB页面的交互性与web浏览器和服务器的通信分离开来. 他结合了CSS(Cascading Style Sheets 层叠样式表).HTML和DOM等多种技术,允许在客户端浏览器的ajax程序以异步的方式和web服务器通信,达到页面的局部更新效果,实现了丰富的用户

js学习总结----ajax中的http请求方式及同步编程和异步编程

一.请求方式 var xhr = createXHR(); xhr.open("get","/getList?num=12",true); xhr.open("post","/getList",true); xhr.send('{"name":"zhangsan","age":7}') //HTTP METHOD;客户端向服务器端发送请求的方式 //以下的请求方式不管

jQuery Ajax(异步改同步)

在实际使用中,我们经常会用的Ajax(异步加载,在不刷新整个网页的前提下对网页部分内容进行更新) 使用时,偶尔会遇上需要从一个接口中得到一个数组和数据对应的id,在另一个接口上再得到数据,最初写法如下: $.get(url_1, function (data) { var dom = []; for (var i = 0; i < data.length; i++) { var item = data[i]; //两个url不一致,根据id查找另一个表 $.get(url_2, function

struts2+ajax实现异步验证

由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在这要对struts2和ajax进行整合,由于我还没把ajax的一些知识总结出来,所以在这也不提了,有关ajax的详细内容将会在以后的博客中写出来.现在我们就以我做的这个添加管理员,验证管理员的用户名是否存在来说一下这个struts2+ajax实现异步验证技术. 首先我们来看一下我们的form表单:

Ajax技术详解

Ajax技术:Ajax描述了一种主要使用脚本(JS)操纵HTTP的web应用架构,它的主要特点是使用脚本操纵HTTP和web服务器进行数据交换,不会导致页面重载.Ajax的核心是JS的XMLHttpRequest构造函数,它定义了用脚本操纵HTTP的API. XMLHttpRequest构造函数:每new一个XMLHttpRequest构造函数返回的对象都表示一个独立的请求/响应对,并且这个对象的属性和方法允许指定请求细节和提取响应数据.需要注意的是当你重用已存在的XMLHttpRequest,

Ajax技术基础

对于AJAX技术,感觉以前虽然用过但是对于AJAX没有一个清晰的认识,今天专门总结一下,希望掌握的更加牢固吧! 一,什么是AJAX? AJAX通常被叫做异步刷新技术,其实他也是可以同步的.主要都用于异步访问服务器. 在通常情况下,我们的页面都是静态的,如果想要与服务器交互,我们可以通过一系列的手段来向服务器发送请求,并将返回的信息展示在页面上,但是通常需要刷新页面,如果不停的请求就需要不停的刷新整个页面,这对于客户而言带来很大的麻烦,尤其是网速很慢的情况,本来只需要更改页面一小点地方的信息,却要