0

代码解释了一切:

//
// … code ...
//
$.ajax({
    dataType: "json",
    url: "foo",
    success: function(data) {
        var my_data = data;
    }
});
//
// … code ...
//
console.log(my_data); // NOT in scope

我如何访问my_dataAJAX 调用之外的内容?我读过也许需要关闭?我找不到任何我想要的例子。

非常感谢。

4

5 回答 5

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)
{
}
于 2013-03-18T11:21:19.293 回答
1

一般来说,你不会。AJAX 调用是异步的,因此不能保证jQuery.ajax()函数执行后立即有值;success在尝试使用该变量之前,您需要等到 AJAX 调用完成并执行回调。

最简单的方法是在回调中使用success值。如果您确实需要它在外部可用,则将其设置为对所有代码可见的变量(不一定是全局的,取决于您的代码的结构),并在尝试在任何代码中使用它之前检查它是否具有值其他功能。

于 2013-03-18T11:22:46.453 回答
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
于 2013-03-18T11:21:49.520 回答
0

全局声明 my_data 变量..

var my_data = data;

    $.ajax({
        dataType: "json",
        url: "foo",
        success: function(data) {
            my_data = data;
        }
    });
于 2013-03-18T11:21:53.210 回答
0

用作变量以访问 ajax 之外的数据my_datagloabl

var my_data = '';
$.ajax({
    dataType: "json",
    url: "foo",
    success: function(data) {
        my_data = data;
    }
});

console.log(my_data);
于 2013-03-18T11:23:28.477 回答