为什么这个DataTables Ajax调用不能正常工作?

时间:2012-08-21 17:16:28

标签: php jquery datatables

我正在尝试使用dataTables插件来处理网站的信息。我已阅读数据表的documentationvarious support个主题以及various StackOverflow questions,但无法解决问题。根据上面的文档,我的代码应该工作得很好......但事实并非如此。

使用Javascript:

$(document).ready( function(){
 $('#results_table').dataTable( {
  'bServerSide': true,
  'sAjaxSource': 'results.php',
  'fnServerParams': function ( aoData ) {
    aoData.push( { 't': Math.random() }); 
    }
   });
});

HTML代码:

<div id='results'>
  <table id='results_table' >
   <thead>
    <tr>
    <th>Num</th>
    <th>Type</th>
    <th>Access date</th>
    <th>Access name</th>
   </tr>
  </thead>
 <tbody>
</div>

PHP代码段(在检索/格式化SQL数据之后:

$output = array('sEcho'=>1,'iTotalRecords'=>$count, 'iTotalDisplayRecords'=>$count, 'aaData'=> $results);
echo json_encode($output);

返回的数据(测试总数的一小部分):

{"sEcho":1,"iTotalRecords":3,"iTotalDisplayRecords":3,"aaData":[["1707052901-1A","D","Aug 17, 2012 1:54 PM","aqr"],["1707052901-1A","C","Aug 17, 2012 1:53 PM","aqr"],["2835602-4A","D","Aug 15, 2012 7:39 AM","aqr"]]}

现在,当我加载带有数据表的页面时,我收到了一个极其有用的答案 -

  

未捕获的TypeError:无法读取未定义的jquery.dataTables.min.js的属性'length':49

并且表格中没有填充信息。

问题:我做错了什么;为什么我对dataTables的服务器端处理的实现不起作用?如何解决此问题才能正确显示?

1 个答案:

答案 0 :(得分:3)

aoData.push( { 't': Math.random() }); 

应该像这样使用:

aoData.push( { 'name': 't', 'value':Math.random() }); 

不确定这是否是问题,但这解决了使用数据表时的一些问题