我有一个像这样的数据表:
var _initTable = function() {
$('#datatablesresults tr').not(':first').on('click', function() {
var dateandtime = $(this).find(':nth-child(3)').text();
window.location.href = '/results/detail/dateandtime/' + dateandtime;
});
};
$('#datatablesresults').dataTable({
bProcessing : true,
sProcessing : true,
bServerSide : true,
sAjaxSource : '/results/load-results',
fnServerParams: function ( aoData ) {
aoData.push( {"name": "quizid", "value": quizid },{ "name": "questionid", "value": questionid } );
},
aoColumnDefs : [{'bSortable' : false, 'aTargets' : ['no-sort']}], // make the actions column unsortable
sPaginationType : 'full_numbers',
fnDrawCallback : function(oSettings) {
_initTable();
}
});
当我点击一个按钮时,我想重新加载表格中的数据(进行ajax调用)
$('.carousel-control.right').click(function() {
var currentquestion = $('#myCarousel .active').index('#myCarousel .item') + 1;
var question = currentquestion + 1;
var quizid = <?= json_encode($quizid); ?>;
var activediv = $('.item').filter('.active');
var questionid = activediv.index() + 2;
var questionclass = ".question" + questionid;
var questionid = $(questionclass).attr("id");
var getParams = "quizid=" + quizid +"&questionid=" + questionid;
$("#datatablesresults").dataTable().fnReloadAjax("/results/load-results?" + getParams);
});
但数据保持不变......在这里你看到我的ajax调用:
第一个是我的页面加载时。第二个是我的ajax刷新,重发的数据与另一个不同。但是你看到有另一个ajax调用覆盖数据......:/
有谁知道我做错了什么?
编辑:我做了一个jsfiddle:http://jsfiddle.net/8TwS7/答案 0 :(得分:0)
当你拨打这一行时
$("#datatablesresults").dataTable().fnReloadAjax("/results/load-results?" + getParams);
您正在重新初始化数据表
将你的数据表()放在doc中的变量中,然后调用fnDraw()来重绘表...就像我在你的另一个问题中回答Reload datatable data with ajax call on click
如果您需要更多帮助发布整个js代码,我会告诉您
答案 1 :(得分:0)
一旦定义了它,就不需要使用.dataTable()。
首先将数据表分配给变量:
var myDataTable = $('#datatablesresults').dataTable({
bProcessing : true,
sProcessing : true,
bServerSide : true,
sAjaxSource : '/results/load-results',
fnServerParams: function ( aoData ) {
aoData.push( {"name": "quizid", "value": quizid },{ "name": "questionid", "value": questionid } );
},
aoColumnDefs : [{'bSortable' : false, 'aTargets' : ['no-sort']}], // make the actions column unsortable
sPaginationType : 'full_numbers',
fnDrawCallback : function(oSettings) {
_initTable();
}
});
然后在该变量上使用fnReloadAjax来刷新它:
myDataTable.fnReloadAjax("/results/load-results?" + getParams);