Javascript 使用自定义HTTP POST请求和响应的jQuery Datatables服务器端分页

Javascript 使用自定义HTTP POST请求和响应的jQuery Datatables服务器端分页,javascript,datatables,Javascript,Datatables,过去两天我一直在研究一个问题。 我在一个页面中使用jQuery和DataTables,它从服务器获取数据并非常愉快地填充表。 我需要对来自dataTables库的请求进行更改,以便从服务器获取数据 在下面的链接中,是否可以在没有定义参数列表的情况下发出jquery ajax post请求 这是我的json POST请求: {"page_number":1,"page_size":10} 这是我的服务器响应: { "status": 200, "message": "Users retri

过去两天我一直在研究一个问题。 我在一个页面中使用jQuery和DataTables,它从服务器获取数据并非常愉快地填充表。 我需要对来自dataTables库的请求进行更改,以便从服务器获取数据

在下面的链接中,是否可以在没有定义参数列表的情况下发出jquery ajax post请求

这是我的json POST请求:

{"page_number":1,"page_size":10}
这是我的服务器响应:

{
 "status": 200,
 "message": "Users retrieved successfully.",
  "users": [Assumelistofusers],
  "total_count": 50,
  "total_page_count": 5
}
我发现,在YUI数据表控制库(beta版)中,有一个很好的服务器端分页示例。 请参阅以下链接:


我不确定您为什么要这样做,因为如果您明确排除这些参数,那么您将失去所有的筛选和排序功能

但是,可以使用fnServerData函数定义自己对服务器端数据源的调用和方法

$('#dt').dataTable({
"bServerSide": true,
"sAjaxSource": "my_serverdata.script",
"fnServerData": function(sSource, aoData, fnCallback, oSettings) {
  var mydata=[]
  mydata.push( { "name": "page_number", "value": 1 } );
  mydata.push( { "name": "page_size", "value": 10 } );
   //here comes a basic jQuery helper function to handle your ajax call.
   //of course you can replace it with any other ajax handler
   //has nothing to do with dataTables
   $.ajax({
    "dataType": 'json',
    "type": "POST",
    "url": sSource,
    "data": mydata,
    "success": fnCallback
  });
}
});
这里通常的
aoData
被自定义数组
mydata
完全覆盖。这将发布到您的服务器:

 page_number    1
 page_size  10
现在,您只需要为成功处理程序编写一个函数,将服务器响应映射到预期的变量(
iTotalRecords=total_count
aaData=users
等),然后调用
fnCallback
来处理一切

当然,这需要一些摆弄来找出如何填写预期的服务器响应。但这应该行得通

因为ajax,我不能演奏小提琴或弹琴

请注意,只有在无法更改服务器端脚本的情况下,这才有意义。另外请注意,与我创建新数组mydata的方法相同,您也可以将额外的post数据推送到
aoData
,而忽略服务器端的其他参数

顺便说一句:返回
total\u page\u count
有点没用,因为这可以在客户端非常容易地计算出来