JSON javascript未定义变量问题

时间:2013-11-15 18:37:07

标签: javascript ajax json

我发现了问题,但我的解决方案无效。变量d0和d1将被填充,但在代码创建并拼接数组storelocations之后。因此,我得到一个错误,即d0和d1未定义。任何解决方案?

使用Javascript:

    $(function () {


        $.get("/Map/GetJsonData", function (data) {
            storeLocations = [];
            var d0 = data[0].Delay;
            var d1 = data[1].Delay;


        });

        var storeLocations = new Array();
        storeLocations.splice(storeLocations.length, 0, d0);
        storeLocations.splice(storeLocations.length - 1, 0, d1);


}

2 个答案:

答案 0 :(得分:1)

AJAX是异步,要么创建一个回调,要么在AJAX回调中做你需要的事情:

$.get("/Map/GetJsonData", function (data) {
        storeLocations = [];
        var d0 = data[0].Delay;
        var d1 = data[1].Delay;

        var storeLocations = new Array();
        storeLocations.splice(storeLocations.length, 0, d0);
        storeLocations.splice(storeLocations.length - 1, 0, d1);
});

答案 1 :(得分:1)

由于您在$ .get方法的回调函数中声明了变量(d0和d1),因此这些变量是私有的,只能在声明它们的行之后在该函数中访问。因此,您应该将storeLocations代码移动到回调函数中。

 $(function () {


    var storeLocations = new Array();
    $.get("/Map/GetJsonData", function (data) {
        storeLocations = [];
        var d0 = data[0];
        var d1 = data[1];


        storeLocations.splice(storeLocations.length, 0, d0);
        storeLocations.splice(storeLocations.length - 1, 0, d1);

    });
});

在我的示例中,我在$ .get方法的范围之外声明了storeLocations,因此它可以在jQuery文档就绪方法范围内的任何位置访问(在声明它的行之后)。