jQuery - 尝试解析XML时,未捕获的错误:无效的XML:[object Document]

时间:2012-02-21 01:31:30

标签: jquery xml ajax

我有一些带有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");
        }
    });
}); 

1 个答案:

答案 0 :(得分:11)

看起来它已经被解析了。您的xml对象似乎已包含xml文档,而parseXML应该用于将XML字符串转换为XML文档。如果你想访问所有的Image标签,你应该能够使用jQuery来迭代所有这些标签。