HMLHttpRequest-对象详解

上传人:206****923 文档编号:91573298 上传时间:2019-06-30 格式:DOCX 页数:7 大小:21.59KB
返回 下载 相关 举报
HMLHttpRequest-对象详解_第1页
第1页 / 共7页
HMLHttpRequest-对象详解_第2页
第2页 / 共7页
HMLHttpRequest-对象详解_第3页
第3页 / 共7页
HMLHttpRequest-对象详解_第4页
第4页 / 共7页
HMLHttpRequest-对象详解_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《HMLHttpRequest-对象详解》由会员分享,可在线阅读,更多相关《HMLHttpRequest-对象详解(7页珍藏版)》请在金锄头文库上搜索。

1、HMLHttpRequest 对象详解与传统Web应用中发送请求不同,Ajax 必须以编程方式来发送请求。在请求发送出去之应会在适当的时候返回,但客户端浏览器不会自动加载这种异步响应,程序必须先调用HMLHttpRequest对象的responseText或responseXML来应,再通过DOM操应动态加载到当前页面中。2.1 XMLHttpRequest对象概述关于X MLHttpRequest最通用的定义是:XMLHttpRequest是一套可以在JavaScript、VBscript、JScript等脚本语言中使用的API,它通过HTTP协议异步送请求,并获回的响应。2.2 XMLHt

2、tpRequest的方法和属性2.2.1 XMLHttpRequest的方法(6个)Ø abort():停止发送当前请求。Ø getAllResponseHeaders():回的全部响应头。Ø getResponseHeader("headerLabel"):根据响应头的名字,获取对应的响应头。Ø open("method","URL",asyncFlag,"userName","password"):建RL的连接,并设置请求的方法,以及是否使用异步请求。

3、如果要用户名、密码,则提供对应信息。method:get/post;URL:"second.jsp"asyncFlag:true/false;Ø send(content):发送请求。其中content是请求参数,如没有建议设置为nullØ setRequestHeader("label","value"):在发送请求之前,先设置请求头。详细例子见文件夹022.2getAllResponseHeaders提示:调试程序时,应先应完全正确,再调试JavaScript代码。2.2.2 XMLHttpRequest 的属

4、性(6个)Ø onreadystatechange:该属性用于指定XMLHttpRequest对象状态(4个状态)改变时的事件处理函数。Ø readyState:该属性用于获取XMLHttpRequest对象的处理状态。Ø responseText:该属性用于应文本。Ø responseXML:该属性用于应的XML文档对象。Ø status:该属回的状态码,只响应已经完成时,才会有该状态码。Ø statusText:该属回的状态文本信息,只响应已经完成时,才会有该状态文本信息。1.onreadystatechange属性onready

5、statechange属性用于指定XMLHttpRequest对象的状态改变时执行的函数。当其对象的状态改变时,该函数将被触发。也就是说,XMLHttpRequest对象是事件源,它可以引发赋给onreadystatechange属性值的那个函数的执行。对象每次改变状态时,即readyState属性值改变,都会触发监听该事件的事件处理器(指定的函数)。2.readyState属性readyState的属性有四种状态:Ø 0: XMLHttpRequest对象还没有完成初始化。Ø 1: XMLHttpRequest对象开始发送请求。Ø 2: XMLHttpReque

6、st对象的请求发送完成。Ø 3: XMLHttpRequest对象开始响应。Ø 4: XMLHttpRequest对象应结束。当readyState状态为2以获取XMLHttpRequest发送的请求参数。详细例子见文件夹022.2 readyState注意:以上两个属性名在IE中可以不区分大小写,但是在其他浏览器中要严格区分大小写。 只能写成onreadystatechange。为了保证更好的跨浏览器效果,建议严格区分大小写。3.status和statusText属性响应完成后,依然不能直接应。应也有很多种情况。例如浏览器访问一个并不存在的资源动生成错误提示页,上面显示&

7、quot;HTTP Status 404",404表示资源不存在,即即使资源不存在样会产生响应。也就是说,即使程序判断XMLHttpRequest的readyState为4应已经完成,取的响应信息依然有可能是错误的(执行了,但结果不一定合理)。为了应是否正确,可以检测XMLHttpRequest的status属性或statusText属性。只应正常时,JavaScript才应该应信息,并将信息动态加载到目标页面。status常用状态码及含义如下:Ø 20应正常Ø 304:该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制,使用GET请求时尤其需要注意。&

8、#216; 400:无法找到请求的资源。Ø 401:访问资源的权限不够。Ø 403:没有权限访问资源。Ø 404:需要访问的资源不存在。Ø 405:需要访问的资源被禁止。Ø 407:访问的资源需要代理身份验证。Ø 414:请求的URL太长。Ø 50部错的代码出现问题)。如果想通过JavaScript应,必须:1.判断readyState值是否为4;2.判断status的值是否为200。详细例子见文件夹022.2status注意:实际应用中往往需应不正常的情况进行处理。应出现错误, 但页面没有输出任何提示,则对用户来说是一个巨

9、大的困惑。2.3 发送请求2.3.1 发送简单请求所谓简单请求,是指不包含任何参数的请求。这种请求通常用于自动刷新的应用,例如证券交易所的实时信息发送。对于简单请求,因为无须发送请求参数,所以采用POST和GET方式并没有太大区别。XMLHttpRequest执行步骤:1. 初始化XMLHttpRequest对象。2. 打连接。打开连接时,指定发送请求的方法:采用POST或GET;指定是否采用异步方法(open()方法)。3. 设置监听XMLHttpRequest状态改变的事件处理函数(onreadystatechange赋值)。4. 发送请求(sent()方法)。如采用POST方法发送请求,

10、可发送带参数的请求。open方法通常有三个参数:第一个参数指定发送请求的方式,只能是POST或GET,通常建议采用POST方式;第二个参数指定发送请源地址;第三个参数只能是true或false,用于指定是否采用异步方式发送请求。详细例子见文件夹022.3simple2.3.2 发送GET请求GET请求用获取数据,POST请求用送数据。GET请求将所有请求参数转换成一个查询字符串,并添加到请求的URL之后,因此可以在请求的URL后面看到请求参数名和请求参数值。Ø GET请求传送的数据量较小,一般不能大于2KB。POST传送的数据量较大,通常认为不受限制,但往往取限制。Ø PO

11、ST请求通过HTTP POST机制,将请求的参数以及对应的值放在HTML Header中传输,用户看不到明码的请求参数值。当使用Ajax发送异步请求时,建议使用POST请求。虽然GET请求的请求参数是附加在URL之后的,但使用send方法时,还是应该为send方法传入参数。如果调用send方法时无需发送请求参数,则使用null作为参数即可,即send(null)。如果直接使用send()方法,则在IE中可以运行,在FF中将不能正常运行,因为FF等浏览器要求调用send()方法时必须传入参数。详细例子见文件夹022.3 get2.3.3 发送POST请求POST请求的适应性更广,可使用更大的请求

12、参数,因此在使用Ajax发送请求时,尽量采用POST方式。发送POST请求通常需要如下三个步骤:1. 使用open方法打开连接时,指定使用POST方式发送请求。2. 设置正确的请求头,POST请求通常应设置Content-Type请求头。3. 发送请求,把请求参数转为查询字符串,将该字符串作为send()方法的参数。详细例子见文件夹022.3 post2.3.4 发送请求时的编码问题GET方式发送请求参数所用的字符集与客户端浏览器有关,不同浏览器在发送GET请求参数时使用了不同的字符串集。使用POST请求,尽量少用GET请求的理由:Ø 处理GET请求的请求参数比较繁琐。Ø

13、当请求参数包含的数据太多时,GET请求可能丢失请求参数。Ø 当两次GET请求的请求参数相同是,IE将直接次的缓存,根本不会重新发送请求,这对于自动刷新页面相当不利。但是有个应对方法:不管是否要发送请求参数,发送Ajax请求时总是额外的增加一个随机数的参数,这样就可以保证每次请求都有不同的请求参数。处理编码乱码在Java中在.jsp文件中处理的,不需要在.html中另加处理。详细例子见文件夹022.3 encoding2.3.5 发送XML请求如果请求参数特别多,而且请求参数的结构关系复杂,则可以考虑发送XML请求。XML请求实质还是POST请求,只是在发送请求的客户端页面将请求参数封

14、装成XML字符串的形则负责解析该XML。注意:在生成XML字符串时,为了避免系统对斜线"/"进行特殊处理,使用了转义,即在斜 线前增加反斜线""详细例子见文件夹022.3 xmlRequest2.4 应完整的异步通信包括:发送请求互、应三个步骤得客户端请求参数后,开始处理(调用代码函数理结束并生成响应方法返回处理结果),客户端必须应(获取XMLHttpRequest对象的responseTest属性值或responseXML属性值),应进行处理,将响应动态加载在当前页面上(DOM操作)。2.4.1 处理的时机XMLHttpRequest对象的readyS

15、tate属性可动态响应,当readyState=4时,应完成。应正常,则状态码为200,如果没发送请求,而是直接从浏览器缓存读取响应(如何读取?),则状态码为304。因此,当readyState=4,且status=200或304时,客户端就可以开始应了。2.4.2 使用文本响应应主要借助于HMLHttpRequest对象的如下两个属性:Ø responseText:生成普通文本响应。Ø responseXML:生成XML响应。使用文本响应适用于响应简单的字符串情回值较简单)。2.4.3 使用JSON响应要生成特别复杂的响应,则可采用生成XML响应。但是与JSON格式的响应相比,XML响应有如下缺点:Ø 同样的数据,转化为XML格式比转化为JSON格式的数据量更大。Ø 使用XML响应必成符合XML格式的字符串,编程复杂。Ø 浏览器获取XML响应后,需要使用DOM解析XML响应,编程复杂。应数据量较大,而且响应数据有复杂的结构关系时,使用JSON响应是很好的选择。详细例子见文件夹022.4 jsonResponse

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号