Javascript 使用自定义HTTP POST请求和响应的jQuery Datatables服务器端分页
过去两天我一直在研究一个问题。 我在一个页面中使用jQuery和DataTables,它从服务器获取数据并非常愉快地填充表。 我需要对来自dataTables库的请求进行更改,以便从服务器获取数据 在下面的链接中,是否可以在没有定义参数列表的情况下发出jquery ajax post请求 这是我的json POST请求: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
{"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
有点没用,因为这可以在客户端非常容易地计算出来