0

JSONを解析するこの関数があります。.live関数で呼び出すと、未定義になります。

これが私が作成した関数です。

function getAbc() {
                    var details;
                    var id = $(this).attr('data-id');
                    $.ajax({
                        url : '/index.php/data',
                        type : 'GET',
                        data : 'persons[]=' + id,
                        success : function(data, textStatus, xhr) {
                            details = JSON.parse(data);
                        },
                    });
                    return details;
                }

私は単にこのようにgetAbc()を呼び出しています。また、関数の詳細変数にアクセスする方法はありますか?

4

3 に答える 3

2

継続渡しスタイルを使用します。本質的に$.ajax非同期です。

function getAbc(callback) {
    var details;
    var id = $(this).attr('data-id');
    $.ajax({
       url : '/index.php/data',
       type : 'GET',
       data : 'persons[]=' + id,
       success : function(data, textStatus, xhr) {
           details = JSON.parse(data);
           callback(details);
       }
    });
}

function getAbc(function (details) {
    console.log(details);
});
于 2012-12-19T19:14:00.207 に答える
1

これは非同期ajaxで発生するためです。つまり、リクエストはネットワークを経由するため、が呼び出される前にリターンが返されます。メソッドが戻った後ではなく、コールバックで使用する必要があります。または、詳細を使用する別のメソッドを呼び出して、そのメソッドに渡します。getAbc successdetailssuccessgetAbcsuccessdetails

于 2012-12-19T19:10:16.297 に答える
1

これは、AJAXの動作方法によるものです。

AJAXリクエストは非同期です。つまり、すぐには返されません。

AJAX呼び出しを行うと、不明な時間に完了する要求が行われます。

コールバック関数を使用して結果を処理できます。

コールバック関数は、AJAXリクエストから応答を受信した後に実行される関数です

コールバック関数を指定して、それをAJAX呼び出しに渡すことができます。

于 2012-12-19T19:10:20.937 に答える