我遇到了从返回的ajax回调函数获取返回数组的问题,该函数位于另一个函数内部。问题是在第一个周期内没有接收到数组数据.....
var testFile = $("#selection").val();
var testData = getTestData(testFile);
alert(testData); // not working during the first time I run the function, empty
function getTestData(testF)
{
var testArray = [];
$.getJSON("test.php",{fileTest: testF}, function(data)
{
$.each(data, function(index, value)
{
if(value == "")
{
}else
{
testArray[index] = value;
}
}
});
alert(testArray); // working I see the values
return testArray; // not working the first time running this function
}
答案 0 :(得分:0)
Ajax调用是异步的。这是什么意思?
当您致电$.getJson
时,只需启动HTTP请求,它就不会立即填写testArray
。相反,它会在HTTP请求完成后填写testArray
在未来某个未指定的位置。
您看到其中一个警报而不是另一个警报的原因很简单:当您单击第一个警报的“确定”按钮时,请求已完成,您的答案已准备就绪。我愿意打赌,你所看到的第一个警告(失败)实际上是getTestData
内的警报。这是可能的事件序列:
getTestData()
$.getJSON()
alert(testArray)
,显示警报。由于尚未填写testArray
,因此您有一个空数组。$.getJSON()
来电完成并填写testArray
。return testArray;
,返回填充值alert
正在运行,显示数组