在IE中,当我尝试读取本地XML文件时,JQuery给了我一个parseError。希望有人能够发现它。代码在FF中工作正常
有问题的Jquery
$.ajax({
type: "GET",
url: settings.PresentationLocation,
dataType: "xml",
async: false,
contentType : 'application/xml',
success: function(xml){
//Setup the slides
$(xml).find('slide').each(function(){
//Create the slide
obj.append('<div class="slide"><div class="slideTitle">'+ $(this).find('title').text() +'</div><div class="slideContent">'+ $(this).find('content').text() +'</div></div>');
});
totalSlides = obj.children('.slide').size();
//Hide all the slides
obj.children('.slide').hide();
},
error: function(xmlReq, status, errorMsg){
console.log("Error Message: "+ errorMsg);
console.log("Status: "+ status);
console.log(xmlReq.responseText);
throw(errorMsg);
}
});
XML文件
<?xml version="1.0" encoding="UTF-8"?>
<slides>
<slide>
<title>Slide 3</title>
<content>Hi there</content>
</slide>
</slides>
答案 0 :(得分:2)
不是理想的解决方案,但它有效:
我很快发现我并不是唯一一个遇到这个问题的人:
google search,JQuery Bug,Stackoverflow question
我似乎阅读的所有内容都指向IE如何读取和解析XML。找到一个聪明的解决方案,阅读这里的评论:
blog请参阅评论#28
这仍然无效。在玩了一些ajax函数后,我发现如果删除了dataType,除了博客文章中的#28评论之外,一切都可以在浏览器中使用。
最终代码如下:
//Retrieve our document
$.ajax({
type: "GET",
async: false,
url: settings.PresentationLocation,
success:function(results){
var xml = methods.parseXML(results);
$(xml).find('slide').each(function(){
//Create the slide
obj.append('<div class="slide"><div class="slideTitle">'+ $(this).find('title').text() +'</div><div class="slideContent">'+ $(this).find('content').text() +'</div></div>');
});
totalSlides = obj.children('.slide').size();
//Hide all the slides
obj.children('.slide').hide();
},
error: function(xmlReq, status, errorMsg){
var errMsg = settings.PresentationLocation + " : "+ errorMsg ;
throw(errMsg);
}
});
其中methods.parseXML定义为
parseXML : function(xmlFile){
if (window.ActiveXObject) {
//IE
var doc = new ActiveXObject('Microsoft.XMLDOM');
doc.loadXML(xmlFile);
return doc;
} else if (window.DOMParser) {
return (new DOMParser).parseFromString(xmlFile, 'text/xml');
}
return "";
}