0

我有一个很长的问题以及我的完整代码,但现在它更短了。

  function showRecord(tbl) {
    myDataTable.fnDestroy();
    $.ajax(
    {
        data: "tableName=" + tbl,
        url: "showTable.php",
        dataType: "html",
        success: function (data) { $("#example").html(data); }
    });
    alert('I get desired output as long as I do not comment/remove this alert');
    myDataTable = $('#example').dataTable();
}

但是如果我只是评论alert我没有从数据库中获取数据

如果我不使用(来自datatables.net$('#example').dataTable();的用于分页的 jquery 插件),那么代码可以在没有警报的情况下正常工作。

function showRecord(tbl) {
    //myDataTable.fnDestroy();
    $.ajax(
    {
        data: "tableName=" + tbl,
        url: "showTable.php",
        dataType: "html",
        success: function (data) { $("#example").html(data); }
    });
  //alert('I get desired output as long as I do not comment/remove this alert');
  //myDataTable = $('#example').dataTable();
}

我需要知道为什么在第一个代码示例中需要警报。如果它导致延迟,为什么这里需要延迟以及如何在不使用的情况下实现这一点alert

4

2 回答 2

1

试试这个。

 function showRecord(tbl) {

        //myDataTable.fnDestroy();
        $.ajax(
        {
            data: "tableName=" + tbl,
            url: "showTable.php",
            dataType: "html",
            success: function (data) { 
                $("#example").html(data);
                myDataTable = $('#example').dataTable(); }
        });
      //alert('I get desired output as long as I do not comment/remove this alert');
      //
    }
于 2012-09-13T12:38:39.707 回答
1

Ajax 调用是异步的。在第一个代码块中(如果没有alert) ajax 调用被执行,然后立即(在服务器响应之前)执行此行:

myDataTable = $('#example').dataTable();

并且由于服务器没有返回结果还$('#example')为空。你可以这样说:

function showRecord(tbl) {
    myDataTable.fnDestroy();
    $.ajax(
    {
        data: "tableName=" + tbl,
        url: "showTable.php",
        dataType: "html",
        success: function (data) {
            $("#example").html(data);
            myDataTable = $('#example').dataTable();
        }
    });
}
于 2012-09-13T12:42:39.663 回答