2012-11-19 25 views
0

回調總是空回調返回一個Ajax數組不工作?

// calling the function 
var returnArray = getArrayData(fileName, function(data) { 
    return data; 
}) 
alert(returnArray); // output says undefined 

function getArrayData(fileName, callback) { 
    var arrayData = []; 
    $.getJSON("sendRequestFile", { 
     fileContent: fileName 
    }, function(data) { 
     $.each(data, function(index, value) { 
      if (value === "false") {} else if (value === "") {} else { 
       arrayData[index] = value; 
      } 
     }); 
     alert(arrayData); // see data without no problems 
    }); 
    alert(arrayData); // empty 
    callback(arrayData); // undefined 
}​ 
+0

AJAX是異步的,您的警報方法在AJAX完成之前執行。 – undefined

+1

請在您的代碼上方解釋您的問題。 –

回答

3

阿賈克斯是異步的,完整的回調中運行的回調。

$.getJSON("sendRequestFile", { 
    fileContent: fileName 
}, function(data) { 
    $.each(data, function(index, value) { 
     if (value === "false") {} else if (value === "") {} else { 
      arrayData[index] = value; 
     } 
    }); 
    callback(arrayData); // worky 
}); 
//alert(arrayData); // empty 
//callback(arrayData); // undefined​