回调会因为存在警报功能而被触发,如果没有警报则不会触发?

时间:2015-05-27 00:14:56

标签: javascript jquery

当存在警报功能时(如下所示),回调函数会被触发,一切正常。当警报功能不存在时,回调函数永远不会被触发。

  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); 
   });

1 个答案:

答案 0 :(得分:0)

问题是ajax函数是非阻塞(异步),这意味着每个循环都在继续而不等待响应。当你从任何getJSON调用得到响应时,你已经完成了迭代。

我将ajax函数包装在一个闭包中:

  (function(tableName, startRow, endRow)
  { 
      getTableData(tableName, startRow, endRow, function()
      {
        $(".logTable").after($addRowData); 
      });

  })(tableName, startRow, endRow);

并将$ .ajax对象中的async变量设置为false以进行同步。通讯。