2013-10-15 103 views
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); 
} 
+0

在沒有ajax的情況下測試它。它對我來說工作得很好:http://jsfiddle.net/Tentonaxe/66XFw/ || http://jsfiddle.net/Tentonaxe/66XFw/1/調試101.刪除額外的錯誤發生的確切位置。這不是由於'$ .parseXML'在這種情況下。 –

+0

我也這樣做了,拿出了XML的呼籲,只是把XML插入,它工作正常。我開始玩xml文件,我從xml返回中刪除了<?xml version =「1.0」?>,它也開始在我的應用程序中工作。將研究.ajax以及在jQuery中獲取所有內容,認爲它會更穩定,謝謝。 –

回答

1

你或許應該使用jQuery整個事情。使用$.ajax發送您的請求,請參閱Jquery .ajax,您不必擔心(理論上)關於跨瀏覽器支持。目前您只使用Jquery解析XML,而不是實際的請求,這可能會導致問題。

1

其工作正常!試試這個,

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

} 
相關問題