1.1.1总结Ajax技术的核心是XMLHttpRequest对象(简称XHR),它可以通过使用XHR对象获取服务器的数据,然后通过DOM将数据插入页面进行呈现。虽然名称中包含了XML,但是Ajax通信与数据格式无关,所以我们的数据格式可以是XML或者JSON。XMLHttpRequest对象用于后台与服务器交换数据,其具体功能如下:更新网页而不重新加载页面,页面加载后向服务器请求数据,页面加载后从服务器接收数据,后台向服务器发送数据。1.1.2 body XMLHttpRequest是微软设计的一个JavaScript对象,被Mozilla、苹果和谷歌采用,W3C正在对其进行标准化。它提供了一个简单的方法来检索网址中的数据。要创建一个xmlhttprequest实例,我们只需要一个新的就可以了:复制代码如下:////创建一个XMLHttpRequest对象. varreq=new XMLHttpRequest();有人可能会说:“这可不行!IE6不支持最初的XHR对象”,这是真的。稍后我们将介绍支持IE6或更旧版本来创建XHR对象的方法。XMLHttpRequest的用法创建XHR对象后,我们将调用一个初始化方法open(),该方法接受如下定义的五个参数:复制代码代码如下: void open (domstring方法,//'get ',' post ',' put ',' DELETE' DOMString url,可选布尔async,可选domstring用户,可选DOMString密码);通过上面的定义,我们知道open()方法的签名包含五个参数,其中需要参数方法和url地址。假设我们对URL: myxhrtest.aspx发送GET请求获取数据,具体定义如下:复制代码如下: var req=new XMLHttpRequest();req.open('GET ',' myxhrtest.aspx ',false);上面的代码将为myxhrtest.aspx启动一个GET请求这里需要注意两点:第一,URL是相对于当前执行代码的页面(使用绝对路径);其次,调用open()方法并不真正发送请求,而只是启动一个要发送的请求。请求只能发送到同一域中使用相同端口和协议的URLs如果URL和发起请求的页面之间存在任何差异,将会引发安全错误。若要真正发送请求,请使用send()方法,该方法接受一个参数,即作为请求正文发送的数据。如果没有必要通过请求体发送数据,我们必须传递一个空值。调用send()后,请求会被调度到服务器,完整的Ajax请求代码如下:复制代码如下: var req=new XMLHttpRequest();req.open('GET ',' myxhrtest.aspx ',false);req . send(null);发送请求后,我们需要检查请求是否成功执行。首先,我们可以通过状态属性来判断。一般来说,HTTP状态码为200是成功的标志。此时,响应体的内容将保存在responseText中。另外,状态码为304,表示请求的资源没有被修改,浏览器缓存的数据可以直接使用。Ajax的同步请求代码如下:复制代码如下: if (req!=null){ req . onreadystatechange=function(){ if((req . status=200 req . status 300)| | req . status==304){////做点什么。} else { alert('请求不成功: ' req . status);} };req.open('GET ',' www . myxhtest . aspx ',true);req . send(null);}之前,我们定义了Ajax同步请求。如果我们发送异步请求,javascript代码将在请求过程中继续执行。此时,我们可以通过readyState属性判断请求状态。当readyState=4时,表示已经收到所有响应数据。属性值的定义如下:readyState值描述0未初始化;Open()方法1尚未被调用来启动;尚未调用Send()方法;2已发送;但尚未收到。