2008-03-27[脚本化HTTP]

本文详细介绍了XMLHttpRequest对象的创建、使用及工作原理。包括如何通过GET、POST等HTTP方法向服务器发送请求并处理响应,以及同步与异步请求的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XMLHttpRequest提供了HTTP协议的完全访问,包括作出POST和HEAD请求以及普通的GET请求的能力,可以同步或异步返回Web服务器的请求,并且能够以文本或者一个DOM文档的形式返回内容

使用XMLHttpRequest脚本化HTTP的三个步骤:
  1. 创建一个XMLHttpRequest对象
  2. 指定HTTP请求并向一个Web服务器提交
  3. 同步或异步的获得服务器响应

大 多数浏览器中,创建XMLHttpRequest的方法:var request = new XMLHttpRequest();在IE6 IE5中XMLHttpRequest是一个ActiveX对象,创建方法是:var request = new ActiveXObject("Microsoft.XMLHTTP");或var request
= new ActiveXObject("Msxml2.XMLHTTP");

XMLHttpRequest向Web服务器提交请求的过程:
  1. 调 用open()方法来制定所请求的URL以及请求的HTTP方法,大多数HTTP请求都是用GET方法完成的,该方法只是下载该URL的内容,另一个方法 是POST,它允许指定的变量的值作为请求的一部分,HEAD是另一个有用的HTTP方法,它要求服务器只是返回和该URL关联的头部;open ("GET", url, false, [name], [password]), 默认情况下,open方法设置一个异步的XMLHttpRequest,将false作为第三个参数,就是告诉函数同步获取服务器响应,最后两个参数是当 从一个需要授权的服务器获取一个URL的时候需要用到的,open并不实际向Web发送请求,只是保存自己的参数,等到实际发送时再使用,在发送请求前, 必须设置所需的请求头部,例如:request.setRequestHeader("User-Agent", "XMLHttpRequest");Web浏览器自动为建立的请求添加相关的cookie,只有当想要向服务器发送一个假的cookie时,才需要显示 的设置Cookie头部
  2. 发送请求send(null),参数是请求提,对于HTTP GET请求,参数总是为null,然后对于POST请求,它包含要发送给服务器的表单数据
  3. 返 回,返回后可以根据XMLHttpRequest的status属性来检查服务器所返回的HTTP状态,状态200代表成功,responseText属 性成为了一个可用的字符串,如果响应的是一个XML文档,也可以通过responseXML属性把该文档作为一个DOM Document对象来访问,为了让XMLHttpRequest能够把相应解析到Document对象中,服务器必须使用MIME类型的 “text/xml”来表示其XML文档

使用同步的问题:
如果Web服务 器停止响应,send()函数会阻塞很长一段时间,Javascript执行停止,而且XMLHttpRequest不能停止,send()方法并没有提 供任何方式来制定等待时间的最大长度,而且,一旦请求已经发送,客户端Javascript的单线程执行模式也不允许脚本中断一个同步的 XMLHttpRequest请求

处理异步响应:
send()方法向服务器发送请求然后立即返回,响应时会产生onreadystatechange事件,正如其名,只要readyState变了,事件句柄函数就会被调用

readyState值与含义:
0    open()还没有调用
1    open()已经调用,但是send()还没有调用
2    send()已经调用,但服务器还没有响应
3    正在从服务器接收数据,readyState 3在Firefox与IE中略有不同
4    服务器响应完成

readyState 3的注意事项:
在Firefox中readyState 3多次调用onreadystatechange句柄,以提供下载反馈过程,脚本可能使用这些多次调用来为用户显示一个进度指示器,而在IE中readyState 3只调用一次 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值