0

我有这个代码:

$.ajax({
    url: "lang_files/" + window.localStorage.language + ".xml",
    dataType: 'xml',
    success: function(data) {
        var xml_node = $("resources", data);
        $("#index_intro").text(xml_node.find('string[name="index_intro"]').text());
    },
    error: function(data) {
        console.log("Error loading XML data");
    }
});

它工作正常,使用我的 XML 文件中的信息正确设置了 .text(),我现在希望能够在我的应用程序中使用 XML 文件,而不仅仅是在成功调用中,所以我做了:

var xml_node;

$.ajax({
    url: "lang_files/" + window.localStorage.language + ".xml",
    dataType: 'xml',
    success: function(data) {
        xml_node = $("resources", data);
    },
    error: function(data) {
        console.log("Error loading XML data");
    }
});

$("#index_intro").text(xml_node.find('string[name="index_intro"]').text());

但是这不起作用,我想了解原因。

4

1 回答 1

2

这是因为 ajax 是异步的,所以在您调用 xml_node 时,它​​仍然是未定义的。试试这个:

$.ajax({
    url: "lang_files/" + window.localStorage.language + ".xml",
    dataType: 'xml',
    success: function(data) {
        setIndexIntro($("resources", data));
    },
    error: function(data) {
        console.log("Error loading XML data");
    }
});

function setIndexIntro(xml_node)
{
   $("#index_intro").text(xml_node.find('string[name="index_intro"]').text());
}
于 2013-05-27T12:09:42.653 回答