Javascript AJAX 解析XML 兼容FIREFOX/IE

//导入js文件

function getResult(url, ready) {
 var xmlHttp;
 var r = function() {

  if (xmlHttp.readyState == 4) {
   if (xmlHttp.status == 200) {
    //alert(isIE);

    var xmlstr;
    var xmldoc;
    var isIE = !!(window.attachEvent && !window.opera);
    if (isIE)
     xmldoc = xmlHttp.responseXML;
    else {

     xmlstr = xmlHttp.responseText;
     alert(xmlstr);
     var parser = new DOMParser();

     xmldoc = parser.parseFromString(xmlstr, "text/xml");
    }
    try {
     ready(xmldoc);
    } catch (e) {
     alert(e.message);
    }
   }
  }
 }

 var create = function(url, r) {

  try {
   // Firefox, Opera 8.0+, Safari
   xmlHttp = new XMLHttpRequest();
  } catch (e) {

   // Internet Explorer
   try {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {

    try {
     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
     alert("您的浏览器不支持AJAX!");
     return false;
    }
   }
  }
  xmlHttp.onreadystatechange = r;
  xmlHttp.open("GET", url, true);
  xmlHttp.send(null);

 }
 create(url, r);

}

 
//应用
function ready(xmlDoc)
    {
    
        
        x
=xmlDoc.getElementsByTagName("a")[1];
        y
=x.childNodes[0];
        txt
=y.nodeValue;
        alert(txt);
        
    }
getResult(
"../xml.jsp",ready);

 

xml:

<r>
<a>ff</a>
<a>ggd</a>
</r>

childNodes 属性返回子节点的列表。<a> 元素只有一个子节点,即一个文本节点。

下面的代码检索 <a> 元素的文本节点:

x=xmlDoc.getElementsByTagName("a")[0];
y=x.childNodes[0];

nodeValue 属性返回文本节点的文本值:

x=xmlDoc.getElementsByTagName("title")[0];
y=x.childNodes[0];
txt=y.nodeValue;

结果:txt = "ggd"

posted on 2010-07-10 12:53  yangyh  阅读(2108)  评论(0编辑  收藏  举报