数组不保留内容,也许是声明的内容

时间:2013-07-31 16:06:10

标签: javascript arrays

我在else结构中声明了一个数组

var days = new Array();
$.ajax({
      url: 'someurl',
      dataType: 'jsonp',
      success: processJSON
});

我在processJSON函数

中处理来自ajax调用的数据
function processJSON(jsonData) {
    var weather = jsonData.data.weather;
    for(var key in weather) {
        var day = weather[key];

        days.push(new Array(day.tempMaxC, day.type));
    }
}

我在days-array中添加了一些其他数组。

如果我在控制台中检查它(在processJSON函数中),则长度为3 /

然后,当我想在ajax-call下的某些代码中使用变量时,没有任何作用,当我检查长度时它是0.我想这是声明的东西?

3 个答案:

答案 0 :(得分:1)

在processJson函数之后,您的代码是否在Ajax调用之下发生?对ProcessJson函数的调用是异步的,只有在Ajax调用完成后才会发生。但是之后的代码可能会发生。所以这可能是时间问题。如果你需要数组进行任何其他处理,你应该在回调中或者在你知道回调完成之后。

答案 1 :(得分:0)

将声明置于条件/ else

之外
var days = new Array();
if(...){
}else{
$.ajax
}

答案 2 :(得分:0)

您需要等到XHR通话结束。看起来您正在使用JQuery,因此请查看他们的延迟文档(http://api.jquery.com/deferred.then)。

你会以这样的结局结束:

$.ajax({
      url: 'someurl',
      dataType: 'jsonp'
}).then(function( jsonData ) {
    var weather = jsonData.data.weather;
    for(var key in weather) {
        var day = weather[key];
        days.push(new Array(day.tempMaxC, day.type));
    }        
    console.log( 'done!', days );
});