重新加载数据表时双重调用ajax

我有一个像这样的数据表:

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 = ; 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/

一旦定义了它,就不需要使用.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); 

当你拨打这一行时

 $("#datatablesresults").dataTable().fnReloadAjax("/results/load-results?" + getParams); 

您正在重新初始化数据表

将你的datatables()放在变量中的doc就绪中,然后调用fnDraw()来重绘表…就像我在你的另一个问题中回答的那样在点击时用ajax调用重新加载数据表数据

如果你需要更多帮助发布你的整个js代码,我会告诉你