2014-12-23 29 views
2

我遇到了麻煩,在我的代碼中發現問題。用php發送json填充數據表

我正在做一個搜索腳本,我想在Datatable中顯示結果。我有一個搜索表單,將數據發送到我的php文件並返回查詢結果的json_encode,然後在ajax成功時,我構建了我的表,將結果傳遞給「data」:response。

查詢工作得很好,當我沒有Datatables,但因爲我需要分頁和東西,我需要它在Datatables上工作。

爲HTML表:

<div id="results"> 

     <table id="example" class="display compact hover stripe" cellspacing="0" width="100%"> 
      <thead> 

       <th>Cognome</th> 
       <th>Nome</th> 
       <th>Telefono</th> 
       <th>Provincia</th> 
       <th>Tipo Cliente</th> 
       <th>Amministrazione</th> 
       <th>Stato</th> 
       <th>Fonte</th> 
       <th>Data Ricezione</th> 
       <th></th> 

      </thead>   
     </table> 

    </div> 

的JavaScript數據表:

$('#submit_src').on("click", function() { 

    $.ajax({ 
     data: $("#ricerca").serialize(), 
     type: $("#ricerca").attr('method'), 
     url: $("#ricerca").attr('action'), 
     success: function(response) { 

      $('#example').dataTable({ 
       "data": response, 
       "sPaginationType": "listbox", 
       "bFilter": false, 
       "jQueryUI": true, 
       "processing": true, 
       'iDisplayLength': 25, 
      }); 
     } 

    }); 
    return false; 
}); 

「submit_src」 是我的按鈕提交ofcourse和 「ricerca」 是我的表單的名稱。

JSON的代碼中,我得到的是:

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

錯誤:

DataTables warning: table id=example - Requested unknown parameter '1' for row 0. 

回答

0

我相信,以便它知道在哪裏把返回的數據<tbody></tbody>需要用數據表。嘗試添加到您的table#example

<table id="example" class="display compact hover stripe" cellspacing="0" width="100%"> 
     <thead> 

      <th>Cognome</th> 
      <th>Nome</th> 
      <th>Telefono</th> 
      <th>Provincia</th> 
      <th>Tipo Cliente</th> 
      <th>Amministrazione</th> 
      <th>Stato</th> 
      <th>Fonte</th> 
      <th>Data Ricezione</th> 
      <th></th> 

     </thead> 
     <tbody></tbody>   
    </table> 
+0

對不起,它沒有工作。提交表單後,我添加了從警報中獲得的錯誤,因此更容易進行調試。 – Dankorw

+0

將'response'寫入'response ['aaData']'時會發生什麼? – Tomanow

+0

錯誤未顯示,但該表未填充。警報響應['aaData']顯示'未定義'。 – Dankorw

1

此鏈接可能有助於您試圖完成什麼:http://datatables.net/release-datatables/examples/ajax/objects.html。它解釋說DataTables需要數據的數組;但是,爲了使用這些對象,可以使用columns.data選項來完成。

我也用DataTables沒有<tbody>,所以這不應該是一個問題。

編輯: 試試下面,我能得到的 '東西' 在表中顯示:

$('#example').dataTable({ 
    "data": response.aaData 
}); 

編輯2:

jQuery(document).ready(function() { 

    var response = { 
     "sEcho":0,"iTotalRecords":"35036","iTotalDisplayRecords":"1", 
     "aaData": [ 
     ["stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff","stuff"]] 
    }; 

    $('#example').dataTable({ 
     "data": response.aaData, 
     //"sPaginationType": "listbox", 
     "bFilter": false, 
     "jQueryUI": true, 
     "processing": true, 
     'iDisplayLength': 25 
    }); 

}); 
+0

我試過使用'response.aaData',但我仍然沒有得到任何錯誤,並且表中沒有填充。由於查詢工作正常,並且json被正確地發送給我的腳本,所以我猜它可能是我的json的格式,這是不正確的,或者我正在以錯誤的方式處理它。 – Dankorw

+0

@Dankorw嘗試我的第二個編輯。你的json應該沒問題,我的反應與你的完全一致。我想知道是否該問題與該sPaginationType有關,因爲直到我評論爲止,我無法使用它。 –

+0

它看起來像sPaginationType有兩個選項,'two_button'和'full_numbers'。當我把:'sPaginationType':'full_numbers'它的工作。 –

1

你可能會錯過選項

 dataType : "json", 

對你的代碼。如果沒有指定,這可能會混淆從ajax腳本收到的數據類型。