我有一个很长的问题,以及完整的代码,但现在简短了。
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
,我不会从数据库中获取数据如果我不使用
$('#example').dataTable();
(用于从datatables.net分页的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
的情况下实现延迟 最佳答案
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();
}
});
}
关于javascript - Ajax(代码)块之后的代码需要延迟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12404247/