【问题标题】:jQuery $.parseXML not working for Chrome or FireFoxjQuery $.parseXML 不适用于 Chrome 或 FireFox
【发布时间】:2013-10-23 20:39:32
【问题描述】:

我创建了一个使用 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);
}

【问题讨论】:

  • 在没有 ajax 的情况下测试它。它对我来说很好用:jsfiddle.net/Tentonaxe/66XFw || jsfiddle.net/Tentonaxe/66XFw/1 调试 101. 去掉多余的部分,找出错误发生的确切位置。在这种情况下,这不是因为$.parseXML
  • 我也这样做了,取消了对 xml 的调用,然后将 xml 放入其中,它工作正常。我开始使用 xml 文件,我从 xml 返回中删除了 ,它也开始在应用程序中为我工作。也将研究 .ajax 以获取 jQuery 中的所有内容,认为这样也会更稳定,谢谢。

标签: javascript jquery google-chrome parsexml


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    Chrome/Firefox:

    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; 
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-17
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 2017-03-19
      相关资源
      最近更新 更多