0
var testFile = $("#selection").val(),
    testData = getTestData(testFile); 

// not working during the first time I run the function, empty
alert(testData); 

function getTestData(testF) {
    $.getJSON("test.php", {
        fileTest: testF
    }, function (data) {
        $.each(data, function (index, value) {
            if (value != "") {} else {
                testArray[index] = value;
            }
        });
    });

    // working I see the values
    alert(testArray); 

    // not working the first time running this function
    return testArray; 
}​
4

2 に答える 2

0

AJAXは非同期です..したがって、値が保存される前に関数が返されている必要があります..

より高いスコープの変数に保存し、リクエストが完了したら使用することをお勧めします..

于 2012-11-07T23:36:28.013 に答える
0

返された配列を処理し、必要な処理を のコールバック関数内で行う必要がありますgetJSON()

getJSON空の値を取得する理由は、呼び出しとコールバック関数の実行が完了する前に、戻り値の testArray が実行される可能性が高いためです。

これは、そのメソッドが非同期で実行されるためです。コールバック関数内でデータを処理するために必要なことは何でもする必要があります。

于 2012-11-07T23:38:19.970 に答える