我有一个很长的问题以及我的完整代码,但现在它更短了。
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
答案 0 :(得分: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');
//
}
答案 1 :(得分: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();
}
});
}