我遇到了jquery数据表详细信息初始化的问题。 我需要在页面加载后获取已打开详细信息的表格。
我有以下代码:
function format(d) {
return d;
}
$(document).ready(function () {
$.ajax({
type: "GET",
dataType: "json",
url: "/SHOP/Promotions/GenerateDetailsToJson", //teraz w tym miejscu inicjuję dane do tabel
success: function (result) {
SetDetails(result);
},
error: function () {
alert("Wystąpił nieoczekiwany błąd");
}
})
dt = $('#table').DataTable(
{
"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [0, 6, 7] }
]
}
);
dt.on('draw', function () {
$.each(detailRows, function (i, id) {
$('#' + id + ' td:first-child').trigger('click');
});
});
$('#table').DataTable();}
var table_length = $('#table tbody tr').length; //HERE iS PROBLEM
var tr = document.getElementsByClassName("details");
for (var i = 0; i < table_length; i++) {
var row = dt.row(tr[i]);
row.child(format(details[i])).show();
}
);
问题出在上面代码的最后几行。 这些行需要初始化并打开所有jquery数据表的详细信息,但这些函数不会在时间执行,也不会显示任何内容。 我已经尝试使用超时它更好地工作,但不喜欢想要的和几个令人耳目一新的没有数据 如果你知道任何解决方案,请帮助。
答案 0 :(得分:0)
您必须等待ajax请求完成。
例如:
$(document).ready(function () {
$.ajax({
//...
success: function (result) {
SetDetails(result);
process();
}
});
function process() {
var table_length = $('#table tbody tr').length;
var tr = document.getElementsByClassName("details");
for (var i = 0; i < table_length; i++) {
var row = dt.row(tr[i]);
row.child(format(details[i])).show();
}
}
});
答案 1 :(得分:0)
1:尝试在数据表代码之前删除ajax调用(可能在ajax调用中有一些错误导致其下面的代码无效)
2:在ajax调用中,我相信url是错误的。
3:是否存在setdetails函数,如果不存在,则代码将给出错误
4:尝试在firefox浏览器中运行你的代码(使用firebug),如果你不知道它,请尝试谷歌搜索firebug,但建议使用firebug(非常有帮助)
答案 2 :(得分:0)
尝试使用$.when
和.then
,以便您可以等待ajax完成,然后执行剩余的初始化,如下所示:
$.when(
$.ajax({
....
....
})).then(function()
{
dt = $('#table').DataTable(
....
....
});
//Other initializations.
});