我的MWE data.js看起来像这样:
var data = [];
function initdata(){
$.ajax({
...
success: function(data){
data.push("test");
},
...
});
}
$(document).ready(function(){
initdata();
console.log(data.length);
console.log(data[0]);
}
但是控制台说,data.length
是0
而data[0]
是undefined
。如何从另一个函数中的ajax函数访问数据?
答案 0 :(得分:2)
$.ajax()
是异步的,所以当它完成请求并运行data.push('test')
时,console.log(data.length)
已经完成。
解决此问题的方法是使用回调:
function initdata(callback) {
$.ajax({
...
success: function(result) { // or just success: callback,
callback(result);
}
});
}
$(document).ready(function() {
initdata(function(data) {
console.log(data.length);
console.log(data[0]);
});
}