0

我正在尝试将 xml 文件中的数据存储在关联数组中。创建数组工作正常,但我无法访问其他函数(即 checkArray())中的数据。

var picSetsData = (function () {
    var _picSets = [];

    $.ajax({
        type: "GET",
        url: "xml/content.xml",
        dataType: "xml",
        success: function (xml) {

            $(xml).find('set').each(function (i) {
                _picSets[i] = [];
                _picSets[i].fehler = [];
                _picSets[i].url = $(this).find('src').text();

                $(this).find('spot').each(function (e) {
                    _picSets[i].fehler[e] = [];
                    _picSets[i].fehler[e].x = $(this).find("x").text();
                    _picSets[i].fehler[e].y = $(this).find("y").text();
                });
            });
        }
    });

    return {
        getPicSets: function () {
            if (_picSets) return _picSets;
            else {
                console.log('error');
            }
        }
    };
})();

checkArray();

function checkArray() {
    console.log(picSetsData.getPicSets().length); // 1
    console.log(picSetsData.getPicSets()); // my Array Data
    console.log(picSetsData.getPicSets()[1]); //undefinded
    console.log(picSetsData.getPicSets()[1].url); //undefinded
}

有什么想法可以解决这个问题吗?谢谢。

4

3 回答 3

0

您已在函数内声明_picSets局部变量picSetsData。如果要使其成为可以跨函数共享的全局变量,则需要在函数外部声明它。

于 2012-04-04T13:27:08.433 回答
0

$.ajax()调用是异步的,因此周围的函数将在服务器发送数组的数据之前很久就返回。

您可以在“成功”回调中执行“checkArray()”工作

于 2012-04-04T13:32:23.650 回答
0

那里没有关联数组,只有常规数组。

数组索引是从零开始的,所以如果数组中有一项,它的索引为零:

console.log(picSetsData.getPicSets()[0]);
于 2012-04-04T13:33:02.887 回答