无法将返回的数据从$.get传递到JavaScript中的变量或数组

无法将返回的数据从$.get传递到JavaScript中的变量或数组,javascript,jquery,global-variables,Javascript,Jquery,Global Variables,我正在尝试提醒()由$返回的数据。获取或更准确地将其分配给var数据 var data = []; function outside(text) { data.push(text); } $.get( "../../services/content/test.php", function( content ) { outside(content); }); alert(data); 在从Ajax请求获得结果之前,将调用您的警报。如果您在$.get回调中执行警报,将有一个可用的输出,因此

我正在尝试提醒()由$返回的数据。获取或更准确地将其分配给var数据

var data = [];
function outside(text) {
data.push(text);
}

$.get( "../../services/content/test.php", function( content ) {
 outside(content);

});
alert(data); 

在从Ajax请求获得结果之前,将调用您的
警报。如果您在
$.get
回调中执行
警报
,将有一个可用的输出,因此:

$.get( "../../services/content/test.php", function( content ) {
 outside(content);
 alert(data);
});

这是异步请求的正常行为。

Ajax调用是异步的,因此不能保证数据在发出警报时包含值。尝试在回调中提醒数据

var data = [];
function outside(text) {
data.push(text);
}

$.get( "../../services/content/test.php", function( content ) {
 outside(content);
 alert(data); 
});
目前,代码执行如下:

var data = [];
function outside(text) {
    data.push(text); //4. result is pushed to array.
}

//1.  Ajax call is made
$.get( "../../services/content/test.php", function( content ) {
 outside(content); //3.  Ajax call returns and outside function is called
});
//2.  data is alerted
alert(data);
您可以看到,在将Ajax响应推送到阵列之前,阵列会收到警报。

试试这个

 var data = [];
 function outside(text) {
  data.push(text);
  alert(data); 
 }

 $.get( "../../services/content/test.php", function( content ) {
  outside(content);

 });

$.get是异步的,这意味着浏览器不会等待它完成后再执行下一行。默认情况下,jQuery对服务器执行异步调用,然后将结果发送给作为参数传递的回调函数。这会导致在服务器响应请求并且您的内容已被推入
数据
变量之前触发警报

需要考虑的另一件事是,为
外部
函数创建一个不必要的包装器函数。如果
outside
不是一个通用函数,而是专门用于这种方式,则无需包装它-只需将其作为第二个参数传递即可

var data = [];
function outside(text) {
  data.push(text);
  alert(data);
}
$.get( "../../services/content/test.php", outside);

可能重复感谢,但我想使用函数外部返回的数据,因此您必须调用一些函数来处理Ajax回调返回的数据。没有其他合理的方法可以做到这一点;不过异步调用并不可取。看见