我遇到了一个情况需要帮助。我正在尝试使用jquery ajax方法读取xml文件的内容,如下所示:
$.ajax({
type: "GET",
url: "Resources/languageResource.xml",
dataType: "xml",
success: function(xml) {
$(xml).find(lang).each(function(){
var title=$(this).find('title').text();
var loginBoxHeader1=$(this).find('loginBoxHeader1').text();
var loginBoxHeader2=$(this).find('loginBoxHeader2').text();
var username=$(this).find('username').text();
var password=$(this).find('password').text();
var submit=$(this).find('LoginBtn').text();
var RememberCheckbox=$(this).find('RememberCheckbox').text();
document.getElementById('titleId').innerText = title;
document.getElementById('h1Id').innerHTML = title;
document.getElementById('loginBoxHeader1').innerHTML = loginBoxHeader1;
document.getElementById('loginBoxHeader2').innerHTML = loginBoxHeader2;
document.getElementById('username').innerHTML = username;
document.getElementById('password').innerHTML = password;
document.getElementById('submit').innerHTML = submit;
document.getElementById('RememberCheckbox').innerHTML = RememberCheckbox;
});
}
});
这适用于Firefox和Chrome,但不适用于IE。缺少什么?
Internet Explorer版本为9。
这是xml文件结构:
<xml>
<English>
<title>Welcome to ******* System</title>
<loginBoxHeader1>Login Panel - </loginBoxHeader1>
<loginBoxHeader2>Please provide following credentials!</loginBoxHeader2>
<username>Username:</username>
<password>Password:</password>
<LoginBtn>Log in</LoginBtn>
<RememberCheckbox>Remember my login on this computer</RememberCheckbox>
</English>
<Spanish>
<title>********************************</title>
<loginBoxHeader1>Login Panel -</loginBoxHeader1>
<loginBoxHeader2>Por favor, proporcione las credenciales siguientes!</loginBoxHeader2>
<username>Nombre de Usuario:</username>
<password>Contraseña:</password>
<LoginBtn>iniciar la sesión</LoginBtn>
<RememberCheckbox>Recordar mi usuario en este equipo</RememberCheckbox>
</Spanish>
</xml>
Chrome / Firefox上的结果:
IE上的结果:
答案 0 :(得分:0)
它之所以不起作用,是因为在旧版本的jQuery中,XMLHttpRequest的字段responseXML被评估为XML响应。较新的版本似乎总是使用DOMParser来解析原始响应,即使在XMLHttpRequest的responseXML字段中存在vaild dom树时,它也会在响应的过程中引发异常。由于字符编码问题,可能会抛出异常,但是如果responseXML包含dom树,则可以解决此问题:
var xhr;
$.ajax({
type: "GET",
url: "Resources/languageResource.xml",
dataType: "xml",
xhr: function () {
xhr = $.ajaxSettings.xhr();
return xhr;
},
success: onSuccess,
error: function(status, msg) {
if (status.status == 200) {
var xml = xhr.responseXML;
if (xml && xml.documentElement) {
onSuccess(xml);
}
} else {
// error handling
}
}
});
function onSuccess(xml) {
// parsed xml tree
// ...
}
然而,奇怪的是,responseXML包含一个dom树,而DOMParser无法解析原始响应。这个问题似乎是用IE10修复的 - 是IE9使用两个不同的xml解析器(resonseXML!= DOMParser)? - 奇怪......
答案 1 :(得分:0)
在这种情况下,帮我重置了所有设置IE (Internet Options -> Advanced -> Reset)