代码解释了所有:
//
// … code ...
//
$.ajax({
dataType: "json",
url: "foo",
success: function(data) {
var my_data = data;
}
});
//
// … code ...
//
console.log(my_data); // NOT in scope
如何在AJAX通话之外访问my_data
?我读过可能需要关闭?我找不到任何我想要的例子。
非常感谢。
答案 0 :(得分:2)
Ajax是async
调用,并且可以在console.log之后触发成功,您可以从成功调用函数并将数据传递给它。
$.ajax({
dataType: "json",
url: "foo",
success: function(data) {
yourFun(data);
}
});
function yourFun(data)
{
}
给予功能而不是成功。
$.ajax({
dataType: "json",
url: "foo",
success: yourFun
});
function yourFun(data)
{
}
答案 1 :(得分:1)
一般来说,你没有。 AJAX调用是异步的,因此在jQuery.ajax()
函数执行后不能立即保证值;你需要等到AJAX调用完成,并且在你尝试使用该变量之前执行success
回调。
最简单的方法是在<{1}}回调中使用里面的值。如果你真的需要它在外面可用,那么把它变成一个对你所有代码都可见的变量(不一定是全局的,取决于代码的结构),并在你试图在任何代码中使用它之前检查它是否有值其他功能。
答案 2 :(得分:0)
将my_data
定义为全球,如下所示,
var my_data;
$.ajax({
dataType: "json",
url: "foo",
success: function(data) {
my_data = data;
}
});
//
// … code ...
//
console.log(my_data); // NOT in scope
答案 3 :(得分:0)
全局声明my_data变量..
var my_data = data;
$.ajax({
dataType: "json",
url: "foo",
success: function(data) {
my_data = data;
}
});
答案 4 :(得分:0)
使用my_data
作为gloabl
变量来访问ajax之外的数据。
var my_data = '';
$.ajax({
dataType: "json",
url: "foo",
success: function(data) {
my_data = data;
}
});
console.log(my_data);