Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在另一个函数中从ajax函数访问数据_Javascript_Jquery_Ajax_Scope_Global Variables - Fatal编程技术网

Javascript 在另一个函数中从ajax函数访问数据

Javascript 在另一个函数中从ajax函数访问数据,javascript,jquery,ajax,scope,global-variables,Javascript,Jquery,Ajax,Scope,Global Variables,My MWE data.js如下所示: var data = []; function initdata(){ $.ajax({ ... success: function(data){ data.push("test"); }, ... }); } $(document).ready(function(){ initdata(); console.log(data.lengt

My 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]
未定义的。如何在另一个函数中访问ajax函数中的数据?

$.ajax()
是异步的,因此当它完成请求并运行
data.push('test')
时,您的
控制台.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]);
    });
}

“如何从另一个函数中的ajax函数访问数据?”您可以将数据传递给另一个函数。谢谢,这非常有帮助。谢谢!有没有办法用$实现同样的目标。什么时候?