我在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.我想这是声明的东西?
答案 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 );
});