我正在尝试警告()$ .get返回的数据或更准确地将其分配给var data
var data = [];
function outside(text) {
data.push(text);
}
$.get( "../../services/content/test.php", function( content ) {
outside(content);
});
alert(data);
答案 0 :(得分:2)
在您从Ajax请求获得结果之前调用alert
。如果您在alert
回调中执行$.get
,则会有可用的输出,因此:
$.get( "../../services/content/test.php", function( content ) {
outside(content);
alert(data);
});
这是异步请求的正常行为。
答案 1 :(得分:0)
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响应推送到阵列之前会提醒阵列。
答案 2 :(得分:0)
试试这个,
var data = [];
function outside(text) {
data.push(text);
alert(data);
}
$.get( "../../services/content/test.php", function( content ) {
outside(content);
});
$。get isync意味着浏览器不会等待它完成执行下一行
答案 3 :(得分:0)
默认情况下,jQuery对服务器执行异步调用,然后将结果发送到作为参数传递的回调函数。这会导致您的警报在服务器响应请求之前触发,并且您的内容已被推送到data
变量中。
还要考虑的另一件事是你为outside
函数创建了一个不必要的包装函数。如果outside
不是一般函数,而是仅以这种方式使用,则不需要包装它 - 只需将其作为第二个参数传递。
var data = [];
function outside(text) {
data.push(text);
alert(data);
}
$.get( "../../services/content/test.php", outside);