2013-08-29 33 views
1

我剛剛開始使用數據表1.9 1.9 jquery插件,但面臨從服務器端獲取數據表配置。 我的數據表的代碼是:

$.ajax({ 
     type: "POST", 
     url: "./viewController", 
     data:{ "TableName" : "ViewGridDept", 
     "Call" : "gridConfiguration"}, 
     dataType:"json", 
     success: function(data){ 
     //columns=data.aoColumns; 
     var coldata = eval('('+data+')'); 
     alert(coldata.aoColumns); 
     employeeTable = $("#EmployeeTable").dataTable({ 
     "bJQueryUI" : true, 
     "sPaginationType" : "full_numbers", 
     "bFilter": true, 
     "bInfo": true, 
     "bServerSide": true, 
     "sAjaxSource" : "./viewController", 
     "aoColumns":coldata.aoColumns , 
     "aoColumnDefs":coldata.aoColumnsRef, 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      aoData.push({ "name" : "TableName", "value" : "ViewGridDept" }, 
      { "name" : "Call", "value" : "Data" }); 
      $.ajax({ 
        "dataType": 'json', 
        "type": "POST", 
        "url": sSource, 
        "data": aoData, 
        "success": fnCallback 
        });} 

,並從服務器端的json是

{"aoColumns":[{"mDataProp":"deptName","sTitle":"Department Name"},{"mDataProp":"deptId","sTitle":"Department Id"}],"aoColumnsRef":[{"aTarget":["2"]},{"aTarget":["1"]}]} 

,但我的數據表不加載data.my問題是如何使用數據表"aoColumns":coldata.aoColumns , "aoColumnDefs":coldata.aoColumnsRef,

回答

1

串sColumns已過時可選的是,issue.now我使用oaColumnDefs的主要原因爲我工作的代碼是:

$(document).ready(function() { 
var columns; 
$.ajax({ 
     type: "POST", 
     url: "./viewController", 
     data:{ "TableName" : "ViewGridDept", 
     "Call" : "gridConfiguration"}, 
     dataType:"json", 
     success: function(coldata){ 
     //columns=data.aoColumns; 
     //var coldata = eval('('+data+')'); 
     alert(coldata.aoColumnsRef); 
     employeeTable = $("#EmployeeTable").dataTable({ 
     "bJQueryUI" : true, 
     "sPaginationType" : "full_numbers", 
     "bFilter": true, 
     "bInfo": true, 
     "bServerSide": true, 
     "sAjaxSource" : "./viewController", 
     //"aoColumns":coldata.aoColumns , 
     "aoColumnDefs":coldata.aoColumnsRef, 
     //"aoColumnDefs":[{"sTitle":"Department Name","mDataProp":"deptName","aTargets":"[1]"},{"sTitle":"Department ID","mDataProp":"deptId","aTargets":"[0]"}], 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      aoData.push({ "name" : "TableName", "value" : "ViewGridDept" }, 
      { "name" : "Call", "value" : "Data" }); 
      $.ajax({ 
        "dataType": 'json', 
        "type": "POST", 
        "url": sSource, 
        "data": aoData, 
        "success": fnCallback 
        });} 

}); 
     } 

});

和JSON第一個請求是現在:

{"aoColumnsRef":[{"aTargets":[1],"mDataProp":"deptName","sTitle":"Department Name","bVisible":true,"bSearchable":true},{"aTargets":[0],"mDataProp":"deptId","sTitle":"Department Id","bVisible":true,"bSearchable":false}]} 

希望它能幫助那些如何面對這個問題。

+0

你爲什麼使用'POST'? – andi

2

嵌套JSON您的服務器回覆不像您的數據表所期望的那樣良好。從服務器

在回答該數據表向服務器信息的每個請求

回覆,它期望獲得良好形成JSON對象具有以下參數。

INT iTotalRecords總記錄數,濾波前(即在數據庫中記錄的總數)

INT iTotalDisplayRecords總記錄,過濾後(即過濾已應用的記錄總數 - 不僅僅是數量的記錄正在返回此結果集中)

string sEcho從客戶端發送的sEcho的未更改副本。這個參數會隨着每次繪製而改變(它基本上是一個繪製計數) - 所以這是重要的。請注意,爲了安全起見,強烈建議您將此參數「強制轉換」爲整數以防止跨站點腳本攻擊(XSS)。

string sColumns Deprecated可選 - 這是一個列名稱的字符串,逗號分隔(與sName結合使用),如果需要顯示,它將允許DataTables在客戶端重新排序數據。請注意,返回的列名稱數量必須與表格中的列數完全匹配。爲了更靈活的JSON格式,請考慮使用mData。

array aaData二維數組中的數據。請注意,您可以使用sAjaxDataProp更改此參數的名稱。

你可以找到的信息在這裏http://www.datatables.net/usage/server-side

+0

你是對的,但我有兩個Ajax請求。第一個請求獲取列配置和第二個Ajax請求獲取數據顯示在表中。 –

+0

我發現我的問題是「aColumns」。我現在把aTargets,mDataProp,sTitle放在aoColumnsRef中「並且現在把它發送回數據表的工作:) –