使用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属性来对服务器响应进行判断。
怀揣着一点点梦想的年轻人
相信技术和创新的力量
喜欢快速反应的工作节奏
相信技术和创新的力量
喜欢快速反应的工作节奏