2016-09-13 51 views
0

我使用Datatables插件來得到使用AJAX屬性從服務器表中的數據,並使用DATASRC屬性改造它。我的數據表定義:數據表DATASRC功能不叫成功的Ajax響應

var my_table = $('#my_table').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": { 
     "url": "/my/url", 
     "type": "POST", 
     "dataSrc": function(json) { 
      console.log('json', json); 
      return format_my_table_data(json.data); 
     } 
    }, 
    "deferLoading": found_rows, 
    "data": initial_my_table_data, 
    "ordering": true, 
    "order": [[1, "desc"]], 
    "lengthMenu": [ 
     [25, 50, 100], 
     [25, 50, 100] 
    ], 
    "columns": my_table_columns 
}); 

初始負載正常工作,並命令欄和搜索作品有時但主要是我成功地看到了AJAX調用返回與有效的JSON(我驗證了使用jsonlint.com)和表是停留在「處理...」有時候或者表格根本沒有改變。

的Json從服務器: {"recordsTotal":379,"recordsFiltered":378,"draw":25,"data":[{...}]}

當檢查在控制檯網絡I可以看到正在發送的AJAX請求和響應中的每個時間(有600毫秒至1600ms的總時間取決於是類似於返回的行數)但我的console.log內dataSrc函數不被調用,並沒有在控制檯中的JavaScript錯誤。是什麼賦予了?

+0

是你回來這是在服務器上請求收到了同樣的'draw'參數?如果請求和響應中的「繪製」值不匹配,插件可能會放棄響應。 –

+0

@ Gyrocode.com怎麼樣的情況下返回結果的數量小於平局值,說你只能夠找到3行應該平局值是3?或者,也許我誤解了「繪畫」是什麼。 –

回答

1

你的腳本應該返回draw參數與請求的draw參數的值相同。我相信它從1開始,然後隨着每個請求遞增。

manual

draw

拉伸計數器,這個目的是響應 - 從發送作爲數據請求的一部分的draw參數。需要注意的是強烈建議你施放此參數爲整數,而不是簡單地回顯到客戶端它在draw參數傳送,以防止跨站腳本(XSS)攻擊安全原因

+0

謝謝,我錯誤的繪製屬性作爲返回的行數而不是表繪製的數量。我將返回的繪製值改爲僅僅是傳入的內容,現在它就可以工作。 –