0

この問題を説明するのに適切な言葉を使用していることを願っています.... ここでは、プロパティとメソッドを使用して TK というオブジェクトを定義しています。

var TK = {
    List: [],
    getSectionA: function(listName) {
        var arrayList = [];
        TK.returnList = $.get(
            'ajax/test.html', 
            { sendName: listName }, 
            function(data) {
            }
        );       
    }
};

関数を呼び出す

$("#dropDownList").change(function() {
    TK.getSectionA(fileName);

// ここで、以下のこのコールバック関数から抜け出して、コールバックの戻りデータ (resultLists) を変数 (TK.List) に割り当てた後、通常のコード実行を続けようとしていますが、配列変数 TK.List をアラートすると、何もありません。表示されます。

TK.List = TK.returnList.done(function(data) {
    var resultLists = [];
    $.each(data, function(index, value) {
        if (value == "false") {
            return false;
        }
        else if (value == "") {
            return false;
        }
        else {
            resultLists[index] = value;
        }
    });
    return resultLists;   
});
alert(TK.List.join("")) // not displaying
4

1 に答える 1

0

var resultLists = [];グローバルにするだけです。

次に、AJAX を呼び出した後にタイマーを設定します。タイマーが切れたら、

TK.List = resultsLists;

または、次のようにします。

while(true){
    if(resultLists.length > 0) {
        break;
    }
}
TK.List = resultLists;

ただし、ループ内で使用され、ループの最後にのみ$.each割り当てられるローカル変数があることを確認してください。resultLists

于 2013-01-17T15:20:18.457 に答える