2016-09-20 2 views
0

У меня есть dataTable, как указано ниже.получить данные, полученные из jquery ajax dataTable

oTable = $('#example').dataTable({ 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": source_url, 
    "aoColumns": [ 
      null, 
      null, 
      null, 
      null, 
      //{ "sClass": "left", "bSortable": false }, 
      null 
     ],               
     "aaSorting": [[4, 'desc']], 
     "fnDrawCallback": fnOpenClose 
    }); 

Если данных нет, я получаю ответ таким образом.

{"sEcho": 1, "iTotalRecords": 0, "iTotalDisplayRecords": 0, "aaData": [] } 

Мне нужно, чтобы проверить реакцию, т.е. если iTotalRecords=0, мне нужно показать кнопку отключения загрузки, еще включить его.

Я использовал следующий код

"fnInitComplete": function(oSettings, json) { 
    alert('DataTables has finished its initialisation.'); 
} 

Это было не working.Please помочь мне

ответ

1

Вы должны заменить «sAjaxSource» с обычаем один см ниже.

$('#table').datatable({ 

"ajax" : { 
     "url" : "?yourServerSideDataSource", 
     "type" : "POST", 
     "dataSrc": function (response) { 
         if (response.iTotalRecords == 0) { 
          //DO YOUR THING HERE 
         } 
         //You have to return back the response 
         return response; 
        } 
     }, 

}) 
+0

Когда я использую это, его давая мне Colspan ошибку, а также TypeError: не определено SDATA – Techy

+0

У меня есть добавить еще один ответ смотрите ниже Ответ. – victor

0

первых вы получаете данные с сервера, то инициализация JQuery DataTable

$.ajax({ 
     type: "POST", 
     url: "your url", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     datatype: "jsondata", 
     async: "true", 
     success: function(response) { 
     if(response.d.length!=0)   
      { 
      var dataSet = []; 
       for (var i = 0; i <= response.d.length - 1; i++) {    

       dataSet[i] = []; 
       //set data in dataSet     
       }        
      $('#tblreportmaster').html('<table class="table table-striped table-bordered table-hover" id="tblreport"></table>'); 
      $('#tblreport').dataTable({ 
       "data": dataSet, 
       "columns": [ put column name Here ],           
      "scrollY": "400px", 
      "scrollCollapse": true, 
      "paging": false 
      }); 
     } 
     }, 
     error: function(response) { 
      //error 
     } 
    }); 
1

Используйте это вместо этого.

var mainTable = $('#Table').DataTable({ 

      "processing": true, 
      "serverSide": true, 
      "columns" : YOUR_COLUMN_DEF_HERE, 
      "ajax"  : { 
          "url" : YourServerSideDataSrc, 
          "type" : "POST", 
          "dataSrc": function (response) { 
             if(response.whaterver == 0){ 
              //DO YOUR THING HERE 
             } 
             //return back the response 
             return response; 
             } 
         }, 

     }); 
+0

Его все еще даю мне эту проблему ... ожидал td 5, но только 1 получил .. – Techy

+0

Действительно ... ... затем убедитесь, что вы следовали за скриптом ServerSide .. см. Их документацию здесь https://datatables.net/ examples/server_side/post.html вам просто нужно добавить свойство dataSrc, чтобы выполнить то, что вы хотите. – victor

+0

Поверьте мне. Я использую DataTable почти 3 года ;-), и все, что вам нужно сделать, это следовать их документация.. – victor