2015-07-20 66 views
2

我正在使用jQuery DataTables的服務器端處理模式("serverSide": true)。我正在使用deferred loading option來優化我的網頁加載時間。DataTables延遲加載列選項

我也在使用columns選項,但是當我自己定義columns選項時會有一些衝突。當第一次調用沒有時,它會嘗試查找數據源,這是延遲加載的全部要點。

Uncaught Error: DataTables warning: table id=table - Requested unknown parameter 'id' for row 0. For more information about this error, please see http://datatables.net/tn/4

初始化代碼:

function initialize_table(inital_length) 
{ 
    table_options = { 
     "serverSide": true, 
     "ajax": { 
      "url": '/merchant/all/', 
      "type": 'POST', 
      "deferRender": true, 
      // data: JSON.stringify(data), 
      // contentType: "application/json", 
     }, 
     // "order": [[0, 'asc']] 
     "deferRender": true, 
     "processing": true, 
     "pageLength": 50, 
     "deferLoading": inital_length, 
     "lengthMenu": [ 20, 50, 100, 200, 500 ], 
     "columnDefs": [ 
      { 
       // "class": "details-control", 
       'data': 'gr_id', // response[data] 
       'name': 'gr_id', 
       'orderable': true, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 0, 
      }, 
      { 
       'data': "name", 
       'name': 'name', 
       'orderable': true, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 1, 

      }, 
      { 
       'data': "address", 
       'name': 'address', 
       'orderable': false, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 2, 
      }, 
      { 
       'data': "category", 
       'name': 'category', 
       'orderable': true, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 3, 
      }, 
      { 
       'data': "chain", 
       'name': 'chain', 
       'orderable': true, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 4, 
      }, 
      { 
       'data': "enabled", 
       'name': 'enabled', 
       'orderable': true, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 5, 
      }, 
      { 
       'data': 'status', 
       'name': 'status', 
       'orderable': true, 
       'search': {'regex': false, 'value': ''}, 
       'searchable': true, 
       "targets": 6, 
      } 
     ], 
    } 
    var merchant_table = $("#merchant-table").DataTable(table_options); 
} 
+0

此錯誤通常意味着數據格式不正確,請參閱更多[here](http://datatables.net/manual/tech-notes/4#Parameter-is-a-string)。如果您將'deferLoading'設置爲正數以及'serverSide:true',則不應在第一次調用時請求數據,否則可能會有其他錯誤導致此錯誤。請顯示您的DataTables初始化代碼和服務器返回的數據。 –

+0

當我沒有定義'columns'或'columnDefs'時沒有引發錯誤(然後它使用它的默認值,通過它的索引引用列。)。 – madhukar93

回答

3

使用deferLoading選項與column.data共同的缺陷是在數據表論壇once reported。我能夠使用v1.10.2 from CDN重現該錯誤,但不能使用v1.10.3以上版本,所以我們可以說這已被修復。這可能是由new feature」修復的,能夠使用具有DOM源數據的columns.data將行信息讀入對象而不是數組「。

因此,您可以:

1)首先,請確保您使用的是latest version

2)檢查你的JSON響應。根據您的意見,您正在使用array data source type,但是當您設置column.data選項時,您必須改用object data source type

+0

使用最新版本。在頁面加載時獲取錯誤 - 當它甚至沒有發出ajax請求時 - 因此沒有獲得JSON響應,首次加載頁面時,服務器呈現html。另外,有沒有我用過的對象數據源類型?這是一組對象,就像在文檔中一樣? – madhukar93

+0

這個錯誤最終會出現在我的''列''定義中,因爲在刪除它時,它會按預期工作(當它使用它的默認設置時) – madhukar93

+0

那麼,新版本修復了問題 – madhukar93