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

一般的に言って、あなたはしません。jQuery.ajax()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_dataします。gloabl

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

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