无法将返回的数据从$.get传递到JavaScript中的变量或数组
我正在尝试提醒()由$返回的数据。获取或更准确地将其分配给var数据无法将返回的数据从$.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 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回调返回的数据。没有其他合理的方法可以做到这一点;不过异步调用并不可取。看见