使用XMLHttpRequest来获取xml文档

使用XMLHttpRequest获取XML文档时候需要注意这个文档必须和自己在同一个域中,及同一个域名下或者同一个目录中,如果不是会出现拒绝访问错误。

语法格式:XMLHttpRequest.open(请求方式,请求文件的URL,同步方式);

方法有3个参数:

请求方式:可以使GET,POST,HEAD中的一种;

请求文件的URL,直接用相对路径即可;

同步方式:表示请求发出后是等待回应(false)还是继续执行下面的代码(true)。

js
 1 <script language="javascript" type="text/javascript">
 2         var xmlObj = false;
 3         //判断是否是IE浏览器
 4         if (window.ActiveXObject) {
 5             xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
 6         }
 7         else if (window.XMLHttpRequest) {
 8             //判断是否是火狐浏览器
 9             xmlObj = new XMLHttpRequest();
10         }
11         xmlObj.open('GET', 'rss.xml', true);
12         //使用异步方式所以要在XMLHttpRequest对象的状态改变时做相应的处理
13         xmlObj.onreadystatechange = function () {
14             //判断XMLHttpRequest的状态,如果是4 ,继续处理
15             if (xmlObj.readyState == 4) {
16                 //需要判断返回状态时否是200
17                 if (xmlObj.status == 200) {
18                     DoXml();
19                 }
20             }
21         }
22         //发送请求,因为是GET,所以send的内容是null
23         xmlObj.send(null);
24         function DoXml() {
25             var xmlDoc = xmlObj.responseXML;
26             var arrayList = xmlDoc.getElementsByTagName("item");
27             var html = "";
28             for (var i = 0; i < arrayList.length; i++) {
29                 html = html + "<a href='" + arrayList[i].getElementsByTagName("link")[0].firstChild.data + "'>" + arrayList[i].getElementsByTagName("title")[0].firstChild.data + "</a>"
30                 html = html + arrayList[i].getElementsByTagName("pubDate")[0].firstChild.data + "<br/>";
31             }
32             document.getElementById("mydiv").innerHTML = html;
33         }
34     </script>
readyState状态值 描述
0 未初始化
1 正在装载
2 装载完毕
3 交互中
4 完成


 

所以只有当readyState=4是,一个完整的服务器响应已经收到啦,函数才可以处理该响应。

在这个函数中,首先要检查请求的状态,只有当一个完整的服务器响应已经收到,函数才可以处理该响应,XMLHttpRequest提供了readyState属性来对服务器响应进行判断。

原文地址:https://www.cnblogs.com/hfliyi/p/2623918.html