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

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 に答える
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 に答える