当存在警报功能时(如下所示),回调函数会被触发,一切正常。当警报功能不存在时,回调函数永远不会被触发。
function getTableData(tableName, startRow, endRow, callback)
{
CK.getData = $.getJSON("getTableData.php",{tN: tableName, sR: startRow, eR: endRow}, function(dataTable){});
alert("test");
CK.getData.done(function()
{
// load data inside table using an $.each function...
callback(); // works only when the alert function above is present..
});
}
getTableData(tableName, startRow, endRow, function()
{
$(".logTable").after($addRowData);
});
答案 0 :(得分:0)
问题是ajax函数是非阻塞(异步),这意味着每个循环都在继续而不等待响应。当你从任何getJSON调用得到响应时,你已经完成了迭代。
我将ajax函数包装在一个闭包中:
(function(tableName, startRow, endRow)
{
getTableData(tableName, startRow, endRow, function()
{
$(".logTable").after($addRowData);
});
})(tableName, startRow, endRow);
并将$ .ajax对象中的async变量设置为false以进行同步。通讯。