使用ajax加载jQuery DataTable
我正在尝试(并且失败)使用内置的ajax源参数加载jQuery DataTable。 但是,数据表显示消息“正在加载…”,其中应显示行。
这是我的数据表调用:
$('#my-table').dataTable( {bFilter: false, bInfo: false, bJQueryUI: true, bPaginate: false, bStateSave: false, bSort: false, aoColumns: [ {"sTitle" : "Date"}, {"sTitle" : "Our Co."}, {"sTitle" : "Their Co."}, {"sTitle" : "Note"} ], sAjaxSource: "/contact/company_name/"} );
使用Chrome,我可以看到对/contact/company_name/
的调用正在发生,返回状态200,并且具有以下数据: [[[Hello], [Goodbye], [Test1], [Test2]]]
(其中是我的测试数据)。
我还可以看到dataTables.min.js返回错误Uncaught TypeError: Cannot read property 'length' of undefined
。
我假设我的返回数据格式不正确。 有谁能建议解决方案?
根据网站,您的服务应该以这种格式返回数据:
{ "aaData": [ [ "row 1 col 1 data", "row 1 col 2 data", "row 1 col 3 data", "row 1 col 4 data" ], [ "row 2 col 1 data", "row 2 col 2 data", "row 2 col 3 data", "row 2 col 4 data" ], [ "row 3 col 1 data", "row 3 col 2 data", "row 3 col 3 data", "row 3 col 4 data" ], [ "row 4 col 1 data", "row 4 col 2 data", "row 4 col 3 data", "row 4 col 4 data" ] ] }
所以,将数组包装在一个对象中,将该数组命名为aaData
然后重试。 或者您可以按照自己喜欢的方式命名,但是您需要在data
初始化中添加sAjaxDataProp
参数(比如说您将其命名为data
,如下所示:
$('#example').dataTable( { "bProcessing": true, "sAjaxSource": "/ajaxsource/callmydata", "sAjaxDataProp": "data" } );
如果您的ajax源返回
[[[Hello], [Goodbye], [Test1], [Test2]]]
这对于数据表来说并不合适。 它应该是:
{ iTotalRecords: "54", iTotalDisplayRecords: "22", aaData: "[['Hello', 'Goodbye', 'Test1', 'Test2']]" }
aaData代表数组数组。