过去两天我一直处理过一个问题。 我在一个页面中使用jQuery和DataTables,它从服务器获取数据并非常愉快地填充表格。 我需要对来自dataTables库的请求进行更改以从服务器获取数据。
是否有可能在下面的链接中提出没有定义参数列表的jquery ajax post请求?
https://datatables.net/usage/server-side
这是我的json POST请求:
{"page_number":1,"page_size":10}
这是我的服务器响应:
{
"status": 200,
"message": "Users retrieved successfully.",
"users": [Assumelistofusers],
"total_count": 50,
"total_page_count": 5
}
我发现,在YUI Library for DataTable Control(beta)中,有一个很好的服务器端分页示例。 参考链接:
http://examples.mashupguide.net/lib/yui_2.3.0/examples/datatable/dt_serverpagination.html
答案 0 :(得分:1)
我不确定你为什么要这样做,因为如果你因为某些原因明确排除那些参数,你将会失去所有的过滤和排序。
但是,是的,您可以使用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,您还可以将额外的帖子数据推送到aoData
,并忽略服务器端的其他参数。
BTW:返回total_page_count
有点无用,因为这可以很容易地在客户端计算。