我已经创建了一个用于使用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);
}
答案 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;
}