2016-08-26 2 views
2

У меня есть этот код JavaScript.Ошибка переопределения DataTables

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css"> 
 
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.2.1/css/buttons.dataTables.min.css"> 
 

 
<script type="text/javascript" language="javascript" src="//code.jquery.com/jquery-1.12.3.min.js"></script> 
 
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> 
 
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/buttons/1.2.1/js/dataTables.buttons.min.js"></script> 
 
<script type="text/javascript" language="javascript" src="//cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script> 
 

 
<script type="text/javascript" language="javascript" src="//cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/pdfmake.min.js"></script> 
 
<script type="text/javascript" language="javascript" src="//cdn.rawgit.com/bpampuch/pdfmake/0.1.18/build/vfs_fonts.js 
 
"></script> 
 
<script type="text/javascript" language="javascript" src="//cdn.datatables.net/buttons/1.2.1/js/buttons.html5.min.js"></script> 
 
<script type="text/javascript" language="javascript" src="//cdn.datatables.net/buttons/1.2.1/js/buttons.colVis.min.js"></script> 
 
<script type="text/javascript" language="javascript" src="//cdn.datatables.net/buttons/1.2.1/js/buttons.print.min.js"></script> 
 

 
<script type="text/javascript" language="javascript" class="init"> 
 

 
$(document).ready(function() { 
 
    function getNameSpecsSize(data, type, dataToSet) { 
 
     return data[3] + ", " + data[4] + ", " + data[5]; 
 
    } 
 

 
    function getWOandSheet(data, type, dataToSet) { 
 
     return data[10] + "/" + data[11]; 
 
    } 
 
    
 
    var table = $('#material_used').dataTable({ 
 
     "aProcessing": true, 
 
     "aServerSide": true, 
 
     "scrollY": 350, 
 
     "scrollX": true, 
 
     "deferRender": true, 
 
     "sAjaxSource": "Scripts/server-response-mat-used.php", 
 
     "fnServerData": function (sSource, aoData, fnCallback, oSettings) { 
 
      oSettings.jqXHR = $.ajax({ 
 
       "dataType": 'json', 
 
       "type": "POST", 
 
       "url": sSource, 
 
       "data": aoData, 
 
       "success": fnCallback, 
 
       "error": function() { 
 
        alert('No data available/No matching records found'); 
 
        window.history.back(); 
 
       } 
 
      }) 
 
     }, 
 
     "aoColumns": [ 
 
       {"data": "1", "sClass": "align_center"}, 
 
       {"data": "2", "sClass": "align_center"}, 
 
       {"data": getNameSpecsSize, "sClass": "align_center"}, 
 
       {"data": "6", "sClass": "align_center"}, 
 
       {"data": "7", "sClass": "align_center"}, 
 
       {"data": "8", "sClass": "align_center"}, 
 
       {"data": "9", "sClass": "align_center"}, 
 
       {"data": getWOandSheet, "sClass": "align_center"}, 
 
       { "mData": null , //its null here because history column will contain the mRender 
 
       "mRender" : function (data, type, full) { 
 
        return '<a href="link.php?c='+data[0]+'">Edit</a>/<a href="link.php?c='+data[0]+'">Delete</a>';} 
 
       } 
 
      ], 
 
     "aaSorting": [[0,'desc']], 
 
     dom: 'Bfrtip', 
 
     lengthMenu: [ 
 
      [ -1 ], 
 
      [ 'Show all' ] 
 
     ], 
 
     buttons: [ 
 
      'pageLength', 
 
      'print', 
 
      'copyHtml5', 
 
      'excelHtml5', 
 
      'csvHtml5', 
 
      'pdfHtml5', 
 
      'colvis' 
 
     ] 
 
    }); 
 
}); 
 

 
</script>
<style type="text/css"> 
 
    .align_right { text-align: right; } 
 
    .align_center { text-align: center; } 
 
</style>
<table id="material_used" class="display" cellspacing="0" width="100%"> 
 
<thead> 
 
<tr> 
 
    <th width="10%"><div align="center"><font size="2">A</font></div></th> 
 
    <th width="8%"><div align="center"><font size="2">B</font></div></th> 
 
    <th width="15%"><div align="center"><font size="2">C, D, E</font></div></th> 
 
    <th width="3%"><div align="center"><font size="2">F</font></div></th> 
 
    <th width="10%"><div align="center"><font size="2">L</font></div></th> 
 
    <th width="15%"><div align="center"><font size="2">G</font></div></th> 
 
    <th width="15%"><div align="center"><font size="2">H</font></div></th> 
 
    <th width="15%"><div align="center"><font size="2">I/J</font></div></th> 
 
    <th width="10%"><div align="center"><font size="2">K</font></div></th> 
 
</tr> 
 
</thead> 
 
</table>

Я сделал, чтобы показать сообщение об ошибке Данные отсутствуют/Нет соответствующих записей не найдено в локальный сервер, но когда я запускаю код на моем сервере, ошибка не будет отображаться ,

Любая помощь будет очень признательна.

С уважением.

+0

Вы подтвердили, что запрос AJAX уволен? Один из способов сделать это - взглянуть на инструменты разработчика F12 в вашем браузере. Посмотрите на вкладку «Сеть» и проверьте, что POST отправляется на URL-адрес. –

+0

@devlincarnate Да, абсолютно. POST отправляется на адрес. и я вижу, что результат равен нулю. Я добавил в код, если результат null/error, а затем отобразите сообщение. Внутри локального сервера появляется ошибка, но после того, как я загрузил файл на свой сервер, ошибка не будет отображаться, но все же POST отправляется на url. –

ответ

0

Похоже DataTables fnServerData не работает на моем сервере, так что я пришел с AJAX код, проверить ли ответ на URL дает мне Null ответ или нет, когда страница загружена/готов ,

Так вот код:

$(document).ready(function() { 
 
$.ajax({ 
 
     type: "POST", 
 
     url: "server-response.php", 
 
     cache: false, 
 
     success: function(response){ 
 
      console.log(response); 
 
      if (response == "null"){ 
 
       alert('No data available/No matching records found'); 
 
        window.history.back(); 
 
      } 
 
     } 
 
    }); 
 
});

Когда страница будет готова, то сценарий будет посылать запрос POST и прочитать ответ от URL. Если я получу нулевой ответ, появится диалоговое окно с предупреждением, и страница будет автоматически перенаправлена ​​на предыдущую страницу, прежде чем DataTables отправит AJAX и прочитает ответ JSON (нулевой) на тот же URL-адрес, который я использовал в коде, поэтому сообщение об ошибке из DataTables не будет отображаться.

Смежные вопросы