Javascript ajax(代码)块之后的代码需要延迟

Javascript ajax(代码)块之后的代码需要延迟,javascript,jquery,ajax,datatables,Javascript,Jquery,Ajax,Datatables,我有一个很长的问题和我的完整代码,但现在它是一个较短的问题 function showRecord(tbl) { myDataTable.fnDestroy(); $.ajax( { data: "tableName=" + tbl, url: "showTable.php", dataType: "html", success: function (data) { $("#example").html(

我有一个很长的问题和我的完整代码,但现在它是一个较短的问题

  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();
}
但是如果我只是注释
警报
我不会从数据库中获取数据

如果我不使用
$('#示例').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();
}
我需要知道为什么在第一个代码示例中需要警报。如果它导致延迟,为什么这里需要延迟,以及如何在不使用
警报的情况下实现这一点

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

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

myDataTable = $('#example').dataTable();
由于服务器尚未返回结果,
$(“#示例”)
为空。你可以这样说:

function showRecord(tbl) {
    myDataTable.fnDestroy();
    $.ajax(
    {
        data: "tableName=" + tbl,
        url: "showTable.php",
        dataType: "html",
        success: function (data) {
            $("#example").html(data);
            myDataTable = $('#example').dataTable();
        }
    });
}

警报
会造成延迟。请尝试改用
console.log()
登录。谢谢。但是,在一种行执行语言中,当显示警报时,怎么可能做其他事情呢?不,它不起作用。是的,alert的静默替代方案是一种解决方案。当您使用AJAX时,只要看到alert-window,请求就会继续。当浏览器加载页面时,Javascript会逐行执行,但浏览器会并行执行很多事情。整个网络流量是并行加载的。所以AJAX可能是个问题。图像可能未加载。DOM可能还没准备好……回答得不错。多亏了他,@ek_ny已经解决了这个问题。但你的回答比其他人都完整,所以干杯:)