JSON响应中的变量集未在其他地方未定义

时间:2015-04-27 12:29:55

标签: javascript jquery json

使用此方法获取值并将其设置为var。

var interval;
// Get interval from DB constants table
$.getJSON("/get_slideshow_interval",
    function(data){
        interval = data;
    }
);

console.log(interval);

如果我将该控制台日志放入函数(数据)中,那么它可以正常工作,但是当它退出getJSON调用时它将返回undefined ...

我如何在外面使用它?

3 个答案:

答案 0 :(得分:3)

jax调用是异步;试试这个:

var interval;
// Get interval from DB constants table
$.getJSON("/get_slideshow_interval",
    function(data){
        interval = data;
        console.log(interval);
    }
);

答案 1 :(得分:0)

这是因为$.getJSON的异步行为。在您的代码中,即使未收到数据,console.log(interval)也会执行。但是如果你在getJSON函数里面的function(data){}内写了任何东西,它只会在完成调用后执行。

答案 2 :(得分:0)

您正在进行异步调用。这意味着当您尝试记录间隔值时,它实际上尚未设置。所以你必须等到可以访问该变量。您最好的方法是将代码放在回调中,就像您一样。

你可能希望它看起来像这样:

// Get interval from DB constants table
$.getJSON("/get_slideshow_interval",
    function(interval){
        startSlideShow(interval); // Start the slideshow here.
    }
);