我有一些带有Ajax调用的jQuery,如下所示:
$.ajax({
type: "GET",
url: "xml/photobank.xml",
dataType: "xml",
success: function(xml){
xmlParser(xml, "Charlie");
}
});
function xmlParser(xml, landOwner) {
//Initial photos do not load if following line is used.
//xml = $.parseXML(xml);
$('#photo_container').empty();
console.log('1');
$(xml).find('Landowner').each(function(){
console.log('2');
var landownerName = $(this).attr('Name');
if (landownerName === landOwner) {
$(this).find('Photo').each(function(){
$("#photo_container").append('<div class="photo ' + $(this).find("Category").text().toLowerCase() + '"><p>' + $(this).find("Animal").text() + '</p>'+ '<img class="photobank" src="images/' + $(this).find("Image").text() + '" />' + '</div>');
})
}
});
}
您可以在此处查看XML文件:http://lamanai.org/catmap/xml/photobank.xml
但是,Ajax不显示已解析的XML,并在Chrome的控制台中抛出此错误:Uncaught Error: Invalid XML: [object Document]
。我是在错误的时间调用Ajax吗?现在它已准备就绪,因为我需要在初始页面加载时解析初始的“查理”类别。
如果删除xml = $.parseXML(xml);
行,则会加载初始解析的XML,但之后尝试使用Uncaught ReferenceError: xml is not defined
函数时会出现xmlParser
错误。
任何提示?这是我第一次遇到Ajax。
HTML:http://lamanai.org/catmap/
JS:http://lamanai.org/catmap/js/cameramap.js
XML:http://lamanai.org/catmap/xml/photobank.xml
-
更新:xml = $.parseXML(xml);
行已删除,但现在我无法重新使用该功能。以下代码会导致xml is not defined
错误。
$('#btn_arnoldo').click(function(){
xmlParser(xml, "Arnoldo");
});
我可以使用以下Ajax调用,并让它工作,但每次我想切换我想要使用的XML部分时,是否真的有必要执行Ajax?我认为最初的Ajax给了我一个可以解析的对象?
$('#btn_arnoldo').click(function(){
$.ajax({
type: "GET",
url: "xml/photobank.xml",
dataType: "xml",
success: function(xml){
xmlParser(xml, "Arnoldo");
}
});
});
答案 0 :(得分:11)
看起来它已经被解析了。您的xml对象似乎已包含xml文档,而parseXML应该用于将XML字符串转换为XML文档。如果你想访问所有的Image标签,你应该能够使用jQuery来迭代所有这些标签。