0

我创建了一个使用 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 的 JavaScript 解析,但仅适用于 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);
}
4

2 回答 2

1

Its working fine!!! Try this,

Chrome/Firefox:

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

IE8+/Safari:

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

IE8:

xml.documentElement.childNodes[1].text;

Sample code here,

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; 

}
于 2015-02-21T11:28:38.367 回答
1

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

于 2013-10-15T21:39:18.077 回答