HMLHttpRequest-对象详细讲解

上传人:碎****木 文档编号:220862464 上传时间:2021-12-09 格式:DOCX 页数:7 大小:29.91KB
返回 下载 相关 举报
HMLHttpRequest-对象详细讲解_第1页
第1页 / 共7页
HMLHttpRequest-对象详细讲解_第2页
第2页 / 共7页
HMLHttpRequest-对象详细讲解_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

1、HML Request对象详解与传统 Web 应用中发送恳求不同,Ajax 必需以编程方式来发送恳求。在恳求发送出去 之后,效劳器相应会在适当的时候返回,但客户端扫瞄器不会自动加载这种异步响应,程序 必需先调用 HML Request 对象的 responseText 或 responseXML 来猎取效劳器响应,再通 过D0M 操作将效劳器响应动态加载到当前页面中。2. 1 XMLH11pRequest 对象概述关于 X ML Request 最通用的定义是:XML Request 是一套可以在 JavaScript、VBscript, JScript 等脚本语言中使用的 API,它通过 协

2、议异步地向效劳器发送恳求, 并猎取从效劳器返回的响应。2. 2 XML Request 的方法和属性2. 2. 1 XML Request 的方法(6 个) abort ():停顿发送当前恳求。 getAlIResponseHeaders0 :猎取效劳器返回的全部响应头。 getResponseHeader(nheaderLabelw):依据响应头的名字,猎取对应的响应头。 open (“method“,URL, asyncF 1 ag , “userName“ . assword“): 建立与效劳器 LRL 的连接,并设置恳求的方法,以及是否使用异步恳求。假设远程效劳器需要用户名、密 码,

3、那么供给对应信息。method: get/post; URL: “second. jspM; asyncFlag: true/false; send (content):发送恳求。其中 content 是恳求参数,如没有建议设置为 null setRequestHeader(*label“, “value“): 在发送恳求之前,先设置恳求头。 具体例子见文件夹022. 2getAlIResponseHeaders提示:调试程序时,应先保证效劳器响应完全正确,再调试 JavaScript 代码。2. 2.2 XML Request 的属性(6 个) onready stat echange:该属

4、性用于指定 XML Request 对象状态(4 个状态)转变时的 大事处理函数。 readyState:该属性用于猎取 XML Request 对象的处理状态。responseText:该属性用于猎取效劳器响应文本。 responseXML :该属性用于猎取效劳器响应的 XML 文档对象。 status:该属性是效劳器返回的状态码,只有当效劳器的响应已经完成时,才会有该状 态码。 statusText:该属性是效劳器返回的状态文本信息,只有当效劳器的响应已经完成时, 才会有该状态文本信息。1. onreadystatechange 属性onreadystatechange 属性用于指定 XM

5、L Request 对象的状态转变时执行的函数。当 其对象的状态转变时,该函数将被触发。也就是说,XML Request 对象是大事源,它可 以引发赋给 onreadystatechange 属性值的那个函数的执行。对象每次转变状态时,即 readyState 属性值转变,都会触发监听该大事的大事处理器指定的函数。2. readyState 属性readyState 的属性有四种状态: 0: XML Request 对象还没有完成初始化。 1: XML Request 对象开头发送恳求。 2: XML Request 对象的恳求发送完成。3: XML Request 对象开头读取效劳器的响应。

6、 4: XML Request 对象读取效劳器响应完毕。留意:以上两个属性名在 IE 中可以不区分大小写,但是在其他扫瞄器中要严格区分大小写。只能写成 onreadystatechange。为了保证更好的跨扫瞄器效果,建议严格区分大小写。当 readyState 状态为 2 时,效劳器可以猎取 XML Request 发送的恳求参数。 具体例子见文件夹 022. 2 readyState3. status 和 statusText 属性效劳器的响应完成后,照旧不能直接荻取效劳器响应。由于效劳器响应也有很多种状况。例如扫瞄器访问一个并不存在的资源时,效劳器自动生成错误提示页,上面显示“ Stat

7、us 404”, 404 表示资源不存在,即即使资源不存在或者效劳器错误,效劳器一样会产 生响应。也就是说,即使程序推断 XML Request 的 readyState 为 4,即效劳器响应已经 完成,但从效劳器荻取的响应信息照旧有可能是错误的执行了,但结果不肯定合理。为了推断效劳器响应是否正确,可以检测 XML Request 的 status 属性或 statusText 属性。只有当效劳器响应正常时,JavaScript 才应当读取效劳器响应信息,并将信息动态 加载到目标页面。status 常用状态码及含义如下: 200:效劳器响应正常 304:该资源在上次恳求之后没有任何修改。这通常

8、用于扫瞄器的缓存机制,使用 GET恳求时尤其需要留意。 400:无法找到恳求的资源。 401:访问资源的权限不够。 403:没有权限访问资源。 404:需要访问的资源不存在。 405:需要访问的资源被制止。 407:访问的资源需要代理身份验证。 414:恳求的 URL 太长。 500:服筝器部错误效劳器中的代码消灭问题。假设想通过 JavaScript 猎取效劳器响应,必需:I.推断 readyState 值是否为 4; 2.推断 status的值是否为 200。具体例子见文件夹 022. 2status留意:实际应用中往往需要对效劳器响应不正常的状况进展处理。假设效劳器响应消灭错误, 但页面

9、没有输出任何提示,那么对用户来说是一个巨大的困惑。2.3 发送恳求2. 3.1 发送简洁恳求所谓简洁恳求,是指不包含任何参数的恳求。这种恳求通常用于自动刷新的应用,例如 证券交易所的实时信息发送。对于简洁恳求,由于无须发送恳求参数,所以承受POST 和 GET 方式并没有太大区分。XML Request 执行步骤:1. 初始化 XML Request 对象。2. 翻开与效劳器的连接。翻开连接时,指定发送恳求的方法:承受 POST 或 GET;指定是否承受异步方法(open()方法)。3. 设置监听 XML Request 状态转变的大事处理函数(onreadystatechange 賦 值)。

10、4. 发送恳求(sent()方法)。如承受 POST 方法发送恳求,可发送带参数的恳求。 open方法通常有三个参数:第一个参数指定发送恳求的方式,只能長 POST 或 GET,通常建议承受 POST 方式;其次个参数指定发送恳求的效劳器资源地址;第三个参数只能是true 或false,用于指定是否承受异步方式发送恳求。具体例子见文件夹 022. 3simple2. 3.2 发送GET 恳求GET 恳求用于从效劳黠上猎取数据,POST 恳求用于向效劳黠发送数据。GET 恳求将全部恳求参数转换成一个查询字符串,并添加到恳求的 URL 之后,因此可以 在恳求的 URL 后面看到恳求参数名和恳求参数

11、值。 GET 恳求传送的数据量较小,一般不能大于2KB。POST 传送的数据量较大,通常认 为不受限制,但往往取决于效劳器的限制。 POST 恳求通过 POST 机制,将恳求的参数以及对应的值放在 HTML Header 中 传输,用户看不到明码的恳求参数值。当使用 Ajax 发送异步恳求时,建议使用 POST 恳求。虽然 GET 恳求的恳求参数是附加在 URL 之后的,但使用 send 方法时,还是应当为 send 方法传入参数。假设调用 send 方法时无需 发送恳求参数,那么使用 null 作为参数即可,即 send(null)o 假设直接使用 send。方法,那么 在 IE 中可以运行

12、,在 FF 中将不能正常运行,由于 FF 等扫瞄器要求调用 send()方法时必需 传入参数。具体例子见丈件夹 022. 3 get2. 3.3 发送POST 恳求POST 恳求的适应性更广,可使用更大的恳求参数,因此在使用 Ajax 发送恳求时,尽量 承受 POST 方式。发送 POST 恳求通常需要如下三个步骤:1. 使用 open 方法翻开连接时,指定使用 POST 方式发送恳求。2. 设置正确的恳求头,POST 恳求通常应设置 Content-Type 恳求头。3. 发送恳求,把恳求参数转为查询字符串,将该字符串作为 send方法的参数。 具体例子见文件夹 022. 3 post2.

13、3.4 发送恳求时的编码问题GET 方式发送恳求参数所用的字符集与客户端扫瞄器有关,不同扫瞄器在发送 GET 恳求 参数时使用了不同的字符串集。使用 POST 恳求,尽量少用 GET 恳求的理由: 处理 GET 恳求的恳求参数比较繁琐。 当恳求参数包含的数据太多时,GET 恳求可能丧失恳求参数。 当两次 GET 恳求的恳求参数一样是,IE 将直接使用效劳黠上次的缓存,根本 不会重新发送恳求,这对于自动刷新页面相当不利。但是有个应对方法:不管 是否要发送恳求参数,发送 Ajax 恳求时总是额外的增加一个随机数的参数, 这样就可以保证每次恳求都有不同的恳求参数。处理编码乱码在 Java 中在.js

14、p 文件中处理的,不需要在.html 中另加处理。 具体例子见文件夹022. 3 encoding2. 3.5 发送XML 恳求假设恳求参数特别多,而且恳求参数的构造关系简单,那么可以考虑发送 XML 恳求。XML 请质还是 POST 恳求,只是在发送恳求的客户端页面将恳求参数封装成 XHL 字符串的形式, 效劳器端那么负责解析该 XML。留意:在生成 XML 字符串时,为了避开系统对斜线“厂进展特别处理,使用了转义,即在斜 线前增加反斜线具体例子见文件夹 022. 3 xmlRequest2.4 处理效劳器响应完整的异步通信包括:发送恳求、与效劳器交互、猎取效劳器响应三个步骤。当效劳器 获得

15、客户端恳求参数后,开头处理调用后台效劳器端代码函数;效劳器处理完毕并生成 响应后效劳器端方法返回处理结果,客户端必需获得效劳器响应猎取 XML Request 对象的responseTest 属性值或 responseXML 属性值,并对效劳器响应进展处理,将响应动 态加载在当前页面上 DOH 操作。2. 4.1 处理的时机XML Request 对象的 readyState 属性可动态监控效劳器的响应,当 readyState=4 时, 表示效劳器响应完成。假设效劳器响应正常,那么状态码为 200,假设没发送恳求,而是 直接从扫瞄器缓存读取响应如何读取?,那么状态码为 304。因此,当 readyState=4,且 status=200 或 304 时,客户端就可以开头处理效劳器响应了。2.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

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