선택 드롭다운과 제출 버튼이 있습니다. 사용자는 선택 드롭다운에서 선택하고 제출합니다. 그런 다음 ajax를 호출합니다. 데이터를 찾으면 해당 데이터가 데이터 테이블에 표시됩니다. 그렇지 않으면 "데이터를 찾을 수 없습니다"라는 경고가 표시됩니다.
위의 시나리오는 완벽하게 작동하지만 문제는,
선택 드롭다운에서 두 번째로 선택하면 내 ajax가 처음 작동할 때 오류가 발생합니다.
DataTables warning: table id=report_list - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3
.
나는 시도 "bDestroy": true
또는 $("#report_list").dataTable().fnDestroy();
하지만 perflectly 작동하지 않습니다. 오류가 발생하지만 내 응답 데이터가 표시되지 않습니다.
$("form[name='reports']").validate({
rules: {
report_type:{required:true}
},
// errorElement: 'div',
submitHandler: function(form) {
var report_type = $('#report_type').val();
var fromDate = $('#fromDate').val();
var toDate = $('#toDate').val();
$.ajax({
url: baseUrl + "/Reports_control/Get_reports",
method: "POST",
//dataType: "json",
data: {report_type: report_type,fromDate:fromDate,toDate:toDate},
success: function(response) {
$('.search_record tbody tr').hide();
var data = JSON.parse(response);
if (data.status === 'error')
{
$('.report').hide();
alert(data.msg);
}
if (data.status === 'success') {
if ( $.fn.DataTable.isDataTable( '#report_list' ) ) {
$('#report_list').destroy();
}
//alert(data);
$('.company_report').show();
var trHTML = '';
$.each(data.records, function (i, o){
trHTML += '<tr><td>'+o.Sr_no+
'</td><td>' + o.cutomer_name +
'</td><td>' + o.o_product_brandname +
'</td><td>' + o.o_product_qty +
'</td><td>'+ o.o_order_no +
'</td><td>'+ o.created_by +
'</td><td>'+ o.order_status +
'</td><td>'+ o.action_order_status +
'</td></tr>';
});
$('.search_record tbody').append(trHTML);
$('#report_list').DataTable({
language: {
sLengthMenu: "Show _MENU_",// remove entries text
searchPlaceholder: "Search",
search:""
},
"ordering": false, // remove sorting effect from header
});
}
}
});
}
});
이 문제에서 저를 도와주시겠습니까?
변수를 생성하고 해당 변수에 데이터 테이블을 할당해야 합니다. 아래 코드를 확인하십시오.
<script>
var reportListDatatable = '';
$("form[name='reports']").validate({
rules: {
report_type: {required: true}
},
submitHandler: function (form) {
var report_type = $('#report_type').val();
var fromDate = $('#fromDate').val();
var toDate = $('#toDate').val();
$.ajax({
url: baseUrl + "/Reports_control/Get_reports",
method: "POST",
//dataType: "json",
data: {report_type: report_type, fromDate: fromDate, toDate: toDate},
success: function (response) {
$('.search_record tbody tr').hide();
var data = JSON.parse(response);
if (data.status === 'error')
{
$('.report').hide();
alert(data.msg);
}
if (data.status === 'success') {
if ($.fn.DataTable.isDataTable('#report_list')) {
$('#report_list').dataTable().fnClearTable();
$('#report_list').dataTable().fnDestroy();
}
$('.company_report').show();
var trHTML = '';
$.each(data.records, function (i, o) {
trHTML += '<tr><td>' + o.Sr_no +
'</td><td>' + o.cutomer_name +
'</td><td>' + o.o_product_brandname +
'</td><td>' + o.o_product_qty +
'</td><td>' + o.o_order_no +
'</td><td>' + o.created_by +
'</td><td>' + o.order_status +
'</td><td>' + o.action_order_status +
'</td></tr>';
});
$('.search_record tbody').append(trHTML);
reportListDatatable = $('#report_list').DataTable({
language: {
sLengthMenu: "Show _MENU_", // remove entries text
searchPlaceholder: "Search",
search: ""
},
"ordering": false, // remove sorting effect from header
});
}
}
});
}
});
</script>
도움이 되기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다