我正在尝试运行此:

function loadApp() {
    var content = getContent("content.xml");
    createMap(content);
}

function getContent(file) {
    $.ajax({
        type: "GET",
        url: file,
        dataType: "xml",
        success: parseXml
    });

    function parseXml(xml) {
        var content = [];
        $("element", xml).each(function () {
            var var1 = $(this).children("var1").text(),
            content.push(var1)
        });

        return content;
    }
}

    function createMap(content) {
        alert(content);
    }


但是,当我打开页面时,警报提示我的content变量未定义。当我从getContent()删除content时,createMap(content);可以正常工作并为loadApp()提供一个字符串值。似乎createMap()getContent()之前运行,这就是为什么尚未定义变量的原因,为什么会发生这种情况以及如何解决呢?

提前致谢。

最佳答案

我假设getContent()进行异步AJAX调用。如果是这样,在接收到响应之前将调用createMap()函数。

如果是这种情况,我将修改getContent()函数,以便您可以将createMap()函数传递给它,并在正确的时间调用它。

function loadApp() {
    getContent( "content.xml", createMap );
}

function getContent( file, fn ) {
    $.ajax({
        type: "GET",
        url: file,
        dataType: "xml",
        success: parseXml
    });

    function parseXml(xml) {
        var content = [];
        $("element", xml).each(function () {
            var var1 = $(this).children("var1").text(),
            content.push(var1)
        });
          // Call "fn" instead of returning "content"
        fn( content );
    }
}

10-07 17:24