jQuery $ .parseXML不适用于Chrome或FireFox

时间:2013-10-15 21:28:59

标签: javascript jquery google-chrome parsexml

我已经创建了一个用于使用JQuery解析XML的JavaScript程序。下面是代码和示例XML。运行时,它可以在IE 8中正常运行。但是当我在Chrome或FireFox中测试时,$ .parseXML会加载xml。我没有看到任何错误,它只是停止。我已经发出警报,看看它在哪里停下来确定问题。有人可以帮忙吗?我不明白为什么jQuery在IE 8中工作而不是chrome或Firefox。

XML很简单

<?xml version="1.0" ?>
<userinfo>
  <rc>Y</rc>
  <un>George</un>
</userinfo>

<?xml version="1.0" ?>
<userinfo>
  <rc>N</rc>
  <un></un>
</userinfo>

使用JQuery创建了一个XML的XML解析,但只在IE 8中工作。

  function userLookup( v_page, v_uid, v_pwd )
  {
    var xmlHttp;

    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("Browser does not support AJAX!");
          return false;
        }
     }
   }

   xmlHttp.onreadystatechange= function(){
     if(xmlHttp.readyState==4)
     {
        var xml = xmlHttp.responseText; 
        var xmlDoc = $.parseXML( xml );
        var $xml = $( xmlDoc );
        var $returncode = $xml.find( "rc" );

        if($returncode.text() == 'N')
      {
        alert("Invalid Userid/Password");
      }
      else if ($returncode.text() == 'Y')
      {
      document.getElementById('WelcomeMessage').innerHTML = "Welcome " + loginuser;
      document.getElementById('dialogLogIn').style.display = 'none';
      } else {
            alert( $returncode.text() );
          }
      }
    }

  xmlHttp.open("GET",v_page+"?v_uid="+v_uid+"&v_pwd="+v_pwd,true);
  xmlHttp.send(null);
}

2 个答案:

答案 0 :(得分:1)

你可能应该使用Jquery来完成整个事情。使用$.ajax发送您的请求,请参阅Jquery .ajax,这样您就不必担心(理论上)跨浏览器支持。目前,您只使用Jquery来解析XML而不是实际请求,这可能会导致问题。

答案 1 :(得分:1)

工作正常!!!试试这个,

铬/火狐:

xml.children[0].childNodes[1].innerHTML;

IE8 + / Safari浏览器:

xml.childNodes[0].childNodes[1].textContent;

IE8:

xml.documentElement.childNodes[1].text;

示例代码,

var xml = $.parseXML(XMLDOC); 

Var xmlNodeValue = ""; 

if(userAgent.match("firefox") || userAgent.match("chrome")){ //Chrome and Firefox

xmlNodeValue = xml.children[0].childNodes[1].innerHTML;

}else{ // safari and IE8+

xmlNodeValue = xml.childNodes[0].childNodes[1].textContent; 

}