Я, наконец, бросил полотенце. Я просмотрел кучу примеров как на веб-сайте Datetables, так и здесь, в stackoverflow для решения и внедрил все из них без успеха.Datatables не обновляется после нажатия кнопки
У меня есть страница, в которой есть 2 hjquery ui datepickers (начало и конец даты), которые я использую для подачи в свои php и sql, которые затем возвращают мой json-массив, который загружается в мои datatables. Это работает блестяще с первой попытки.
Однако типичный пользователь захочет изменить эти даты на протяжении всего своего пребывания на веб-сайте, но когда пользователь вводит новые переменные даты и нажимает кнопку go, данные не обновляются с новой информацией, которую он (надеюсь) получил от вход.
здесь свалка моего кода (не при первой загрузке страницы будет получать данные сегодняшние)
$.fn.dataTableExt.oApi.fnReloadAjax = function (oSettings, sNewSource, fnCallback){
if (typeof sNewSource != 'undefined'){
oSettings.sAjaxSource = sNewSource;
}
this.oApi._fnProcessingDisplay(oSettings, true);
var that = this;
oSettings.fnServerData(oSettings.sAjaxSource, null, function(json) {
/* Clear the old information from the table */
that.oApi._fnClearTable(oSettings);
/* Got the data - add it to the table */
for (var i=0 ; i<json.aaData.length ; i++){
that.oApi._fnAddData(oSettings, json.aaData[i]);
}
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
that.fnDraw(that);
that.oApi._fnProcessingDisplay(oSettings, false);
/* Callback user function - for event handlers etc */
if (typeof fnCallback == 'function'){
fnCallback(oSettings);
}
});
}
var oTable;
$(document).ready(function()
{
$("#datestart").datepicker();
$("#datestart").datepicker("setDate", new Date());
$("#dateend").datepicker();
$("#dateend").datepicker('setDate', new Date());
oTable = $('#example').dataTable(
{
"sDom": '<"toolbar">T<"clear">rt',
"oTableTools": {
"sSwfPath": "copy_csv_xls_pdf.swf"
},
"bProcessing": true,
"fnServerParams": function (aoData) {
aoData.push({"name": "dateStart", "value": $('#datestart').datepicker('getDate').getTime()/1000+28800},{"name": "dateEnd", "value": $('#dateend').datepicker('getDate').getTime()/1000+28800});
},
"sAjaxSource": "SearchResults.php",
"iDisplayLength": -1,
"aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]]
})
.columnFilter(
{
sPlaceHolder: "head:before",
aoColumns: [
{ type:"date-euro" },
{ type: "number" },
{ type: "number" },
{ type: "number" },
{ type: "text"}
]
});
$('#btnrun').click(function()
{
if(validateForm())
{
$.blockUI({
css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '10px',
'-moz-border-radius': '10px',
opacity: .5,
color: '#fff'
},
message: '<h1>Loading report...</h1>',
});
setTimeout($.unblockUI, 2000);
oTable.fnReloadAjax();
}
});
});