Я использую jquery datatable, и я застреваю при загрузке новых данных в datatable и redraw. У меня есть следующий фрагмент кода.Как перерисовать DataTable с новыми данными json
First Time DataTable Initialization
var myDataTable=$('#patient_data').DataTable({
searching: false,
"ajax": {
"url": "process/get-patient-search.php",
"type": "POST",
data: {
"clinic": <?php echo $clinicID ?>
},
'dataSrc':function (data){
return data;
}
},
"columns": [
{ "data": "detail_id" },
{ "data": "fname" },
{ "data": "surname" },
{ "data": "dentist" ,
"className":"hidden-xs"
},
{ "data": "clinic_name" ,
"className":"hidden-xs"
},
{ "data": "speciality" ,
"className":"hidden-xs"
},
{ "data": "date_registered" ,
"className":"hidden-xs",
},
{ "data": "detail_id" }
],
"aoColumnDefs": [{
"aTargets": [7],
'searchable': false,
'orderable': false,
'className':'center',
'mRender': function (data, type, full, meta){
return '<button id="' + data+ '" onClick="getMoreInfo('+data+');" class="moreInfo"><i class="fa fa-info-circle"></i></button>';
}
}]
});<br>
Начальный ответ сервера
[{"detail_id":"1",
"fname":"Hakim",
"surname":"Ali",
"dentist":"Ariya Stark",
"clinic_name":"Doctor ",
"speciality":"O",
"date_registered":"13\/02\/16"
},
{"detail_id":"2",
"fname":"Maria",
"surname":"Arshad",
"dentist":"Ariya Stark",
"clinic_name":"Doctor ",
"speciality":"O",
"date_registered":"13\/02\/16"
}]
Он отлично работает для первого. но мне нужно получить новые данные на основе поиска пользовательских запросов. И когда я перерисовывать таблицу Это говорит о том, что
DataTables предупреждение: таблица ID = patient_data - Запрошенный неизвестный параметр «detail_id» для строки 0. Для получения дополнительной информации об этой ошибке, см http://datatables.net/tn/4
Мой Redraw Код сниппета
$("#search_submit").on('click',function(){
if (search_patient.valid()) {
$('.errorHandler').fadeOut();
$.post('process/process-patient-search.php',$('#patient-search-form').serialize(), function(response){
if(isJson(response)){//isJson(response)
alert("data is json");
alert(response);
/* myDataTable.clear();
myDataTable.rows.add(response);
myDataTable.draw(); */
myDataTable.clear().draw();
myDataTable.rows.add(response); // Add new data
myDataTable.columns.adjust().draw();
}else{
alert(response);
/*
$('.errorHandler').html('');
$('.errorHandler').html(response);
$('.errorHandler').fadeIn("slow");
$('.errorHandler').fadeOut(2000); */
}
});
} else {
//alert('form is not valid');
}
});
function isJson(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
ответа сервера
[{"detail_id":"66",
"fname":"Waseem",
"surname":"Akram",
"dentist":"Ariya Stark",
"status":"1",
"clinic_name":"Doctor ",
"speciality":"S",
"date_registered":"15\/09\/16"
},
{"detail_id":"67",
"fname":"Waseem",
"surname":"Akram",
"dentist":"Ariya Stark",
"status":"1",
"clinic_name":"Doctor ",
"speciality":"S",
"date_registered":"15\/09\/16"
},
{"detail_id":"69",
"fname":"Waseem",
"surname":"Akram",
"dentist":"Ariya Stark",
"status":"1",
"clinic_name":"Doctor ",
"speciality":"S",
"date_registered":"15\/09\/16"
}]
Я знаю, что этот вопрос уже задавался и я искал весь день, но ни один из ответа не решить мою проблему. Я пробовал каждый форум, включая стек над потоком и datatable форум. Я прошел весь вопрос и искал все возможные ответы и пробовал все, но ничто не решило мою проблему. Мне действительно нужна помощь в этом. Я не знаю, что не так с моим кодом.
Является ли это на стороне сервера? Я так полагаю, но у вас нет '' serverSide ': true' в коде инициализации. Кроме того, вы не используете API для поиска, вы делаете отдельный вызов ajax и пытаетесь заполнить данные. Несомненно, вы ошибаетесь. – markpsmith
Я думаю, что исходный формат данных и более поздний - разные. Пожалуйста, добавьте исходные данные, поданные в datatable. –
Дорогой Markpsmith. Я заполняю данные новыми данными, которые не со стороны сервера. Я настроил данные на стороне клиента и мне нужно только вставить новые данные. Ответ на сервер, о котором идет речь, поднимает проблему при переполнении данных. В нем говорится предупреждение, которое содержится в вопросе. Данные в формате json, и все должно быть в порядке с ним. но не знаю, что случилось. Просто вставлять новые данные в таблицу данных, нет обработки на стороне сервера. – Arshad