XML HttpRequest

XMLHttpRequest对象提供了在网页加载后与服务器进行通信的方法。

使用XMLHttpRequest对象,能够:
在不重新加载页面的情况下更新网页
在页面已加载后从服务器请求数据,接受数据
在后台向服务器发送数据
 
创建XMLHTTPRequest对象
xmlhttp=new XMLHttpRequest() //现代浏览器,包括IE7
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") //IE5,IE6

一个小例子:


var xmlhttp;
function loadXMLDoc(url)
{
xmlhttp=null;
if (window.XMLHttpRequest)
  {// code for all new browsers
  xmlhttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE5 and IE6
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
if (xmlhttp!=null)
  {
  xmlhttp.onreadystatechange=state_Change;
  xmlhttp.open("GET",url,true);
  xmlhttp.send(null);
  }
else
  {
  alert("Your browser does not support XMLHTTP.");
  }
} function state_Change()
{
if (xmlhttp.readyState==4)
  {// 4 = "loaded"
  if (xmlhttp.status==200)
    {// 200 = OK
    // ...our code here...
    }
  else
    {
    alert("Problem retrieving XML data");
    }
  }
}

上例中,onreadystatechange 是一个事件句柄。它的值 (state_Change) 是一个函数的名称,当 XMLHttpRequest 对象的状态发生改变时,会触发此函数。

xmlhttp.open 的第三个参数,规定请求是否异步处理。True表示脚本会在 send() 方法之后继续执行,而不等待来自服务器的响应。通过把该参数设置为 "false",可以省去额外的 onreadystatechange 代码。如果在请求失败时是否执行其余的代码无关紧要,那么可以使用这个参数。

readyState: HTTP 请求的状态

状态 名称 描述
0 Uninitialized 初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。
1 Open open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
2 Sent Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。
3 Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。
4 Loaded HTTP 响应已经完全接收。

readyState 的值不会递减,除非当一个请求在处理过程中的时候调用了 abort() 或 open() 方法。每次这个属性的值增加的时候,都会触发 onreadystatechange 事件句柄。

responseText: 服务器接收到的响应体(不包括头部)

如果 readyState 小于 3,这个属性就是一个空字符串。当 readyState 为 3,这个属性返回目前已经接收的响应部分。如果 readyState 为 4,这个属性保存了完整的响应体。

responseXML: 对请求的响应,解析为 XML 并作为 Document 对象返回。

status: 由服务器返回的 HTTP 状态代码。当 readyState 小于 3 的时候读取这一属性会导致一个异常。

statusText: 这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。

onreadystatuschange: 事件句柄

每次 readyState 属性改变的时候调用的事件句柄函数。当 readyState 为 3 时,它也可能调用多次。

abort(): 取消当前响应,关闭连接并且结束任何未决的网络活动。这个方法把 XMLHttpRequest 对象重置为 readyState 为 0 的状态,并且取消所有未决的网络活动。例如,如果请求用了太长时间,而且响应不再必要的时候,可以调用这个方法。

open(): 初始化 HTTP 请求参数以供 send() 方法稍后使用,例如 URL 和 HTTP 方法,但是并不发送请求。

XMLHttpRequest.open():

open(method, url, async, username, password)

method 参数是用于请求的 HTTP 方法。值包括 GET、POST 和 HEAD。

url 参数是请求的主体。大多数浏览器实施了一个同源安全策略,并且要求这个 URL 与包含脚本的文本具有相同的主机名和端口。

async 参数指示请求使用应该异步地执行。如果这个参数是 false,请求是同步的,后续对 send() 的调用将阻塞,直到响应完全接收。如果这个参数是 true 或省略,请求是异步的,且通常需要一个 onreadystatechange 事件句柄。

username 和 password 参数是可选的,为 url 所需的授权提供认证资格。如果指定了,它们会覆盖 url 自己指定的任何资格。

send(): 发送 HTTP 请求,使用传递给 open() 方法的参数,以及传递给该方法的可选请求体。

XMLHttpRequest.send():发送一个 HTTP 请求

上一篇:Spark RDD编程


下一篇:将VBS翻译为JS的几种方法