2013-08-29 34 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中“并且现在把它发送回数据表的工作:) –