XMLHttpRequest 对象

Posted Eric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest 对象相关的知识,希望对你有一定的参考价值。

XMLHttpRequest 对象用于在后台与服务器交换数据。

什么是 XMLHttpRequest 对象?

XMLHttpRequest 对象用于在后台与服务器交换数据。

XMLHttpRequest 对象是开发者的梦想,因为您能够:

  • 在不重新加载页面的情况下更新网页
  • 在页面已加载后从服务器请求数据
  • 在页面已加载后从服务器接收数据
  • 在后台向服务器发送数据

所有现代的浏览器都支持 XMLHttpRequest 对象。

 

创建 XMLHttpRequest 对象

所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。

通过一行简单的 javascript 代码,我们就可以创建 XMLHttpRequest 对象。

创建 XMLHttpRequest 对象的语法:

1 xmlhttp=new XMLHttpRequest();

 

老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 对象:  

1 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

XMLHttpRequest对象的属性:

 1 关于异步与同步
 2 异步传输是面向字符的传输,它的单位是字符;
 3 同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。
4 XMLHttpRequest对象的属性。 5    onreadystatechange 每次状态改变所触发事件的事件处理程序。 6    responseText 从服务器进程返回数据的字符串形式。 7    responseXML 从服务器进程返回的DOM兼容的文档数据对象。 8    status 从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪) 9    statusText 伴随状态码的字符串信息 10    readyState 对象状态值 11        0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法) 12        1 (初始化) 对象已建立,尚未调用send方法 13       2 (发送数据) send方法已调用,但是当前的状态及http头未知 14        3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误, 15        4 (完成) 数据接收完毕,此时可以通过通过responseXml和responseText获取完整的回应数据 16         Method :Post 发送数据方式 url send(特属于post方式) 17         Get   发送数据方式 url

 

配置实例:

技术分享
 1 !DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <div id="myTime"></div>
 9 <input id="Button1" type="button" value="Get Time" onclick="creatReq();" >
10 
11 <script type="text/javascript" language="javascript">
12     var req; //定义变量,用来创建xmlhttprequest对象
13     function creatReq()  //创建xmlhttprequest,ajax开始
14     {
15         var url = "ajaxServer.aspx"; //要请求的服务端地址
16         if(window.XMLHttpRequest) //非IE浏览器及IE7(7.0及以上版本),用xmlhttprequest对象创建
17         {
18             req = new XMLHttpRequest();
19         }
20         else if(window.ActiveXObject) //IE(6.0及以下版本)浏览器用activexobject对象创建,如果用户浏览器禁用了ActiveX,可能会失败。
21         {
22             req = new ActiveXObject("Microsoft.XMLHttp");
23         }
24         if(req) //成功创建xmlhttprequest
25         {
26             req.open("GET",url, true); //与服务端建立连接(请求方式post或get,地址,true表示异步)
27             req.onreadystatechange = callback;  //指定回调函数
28             req.send(null); //发送请求
29         }
30     }
31     function callback()  //回调函数,对服务端响应处理,监视response状态
32     {
33         if(req.readyState == 4) //请求状态为4表示成功
34         {
35             if(req.status == 200)  //http状态200表示OK
36             {
37                 Display();  //所有状态成功,执行此函数,显示数据
38             }
39             else // http返回状态失败
40             {
41                 alert("服务端返回状态" + req.statusText);
42             }
43         }
44         else //请求状态还没有成功,页面等待
45         {
46             document.getElementById("myTime").innerHTML = "数据加载中...";
47         }
48     }
49 
50     function Display()  //接受服务器端返回的数据,对其进行显示
51     {
52         document.getElementById("MyTime").innerHTML = req.responseText;
53     }
54 </script>
55 </body>
56 </html>
View Code

 


以上是关于XMLHttpRequest 对象的主要内容,如果未能解决你的问题,请参考以下文章

JQuery需要手动回收xmlHttpRequest对象

XMLHTTPRequest对象不能跨域获取数据?!

018-AJAX异步请求XMLHttpRequest

原生Ajax XMLHttpRequest对象

关于AJAX初始化XMLHttpRequest对象的问题..

Ajax XMLHttpRequest对象的三个属性以及open和send方法