我已经使用 sAjaxSource 参数在服务器端进行了数据处理。
$('#tbl-kamus').DataTable({
"processing": true,
"bServerSide": true,
"sAjaxSource": srcUri ,
...
当它向服务器发出请求时,它将使用以下参数发送GET数据:
sEcho: 1
iColumns: 4
sColumns: ,,,,,,
iDisplayStart: 0
iDisplayLength: 30
mDataProp_0: 0
sSearch_0:
bRegex_0: false
bSearchable_0: true
bSortable_0: false
mDataProp_1: 1
sSearch_1:
bRegex_1: false
bSearchable_1: true
bSortable_1: true
mDataProp_2: 2
sSearch_2:
bRegex_2: false
bSearchable_2: true
bSortable_2: true
mDataProp_3: 3
sSearch_3:
bRegex_3: false
bSearchable_3: true
bSortable_3: false
sSearch:
bRegex: false
iSortCol_0: 1
sSortDir_0: desc
iSortCol_1: 2
sSortDir_1: desc
iSortingCols: 2
并使用php中的GET参数来处理请求。 然后我需要向请求中添加更多参数,因此我将选项更改为
$('#tbl-kamus').DataTable({
"processing": true,
"bServerSide": true,
"ajax": {
"url": srcUri,
"data": {
"user_id": userID
}
...
整个请求参数变成了类似数组的东西:
draw: 1
columns[0][data]: 0
columns[0][name]:
columns[0][searchable]: true
columns[0][orderable]: false
columns[0][search][value]:
columns[0][search][regex]: false
columns[1][data]: 1
columns[1][name]:
columns[1][searchable]: true
columns[1][orderable]: true
columns[1][search][value]:
columns[1][search][regex]: false
columns[2][data]: 2
columns[2][name]:
columns[2][searchable]: true
columns[2][orderable]: true
columns[2][search][value]:
columns[2][search][regex]: false
columns[3][data]: 3
columns[3][name]:
columns[3][searchable]: true
columns[3][orderable]: false
columns[3][search][value]:
columns[3][search][regex]: false
order[0][column]: 1
order[0][dir]: desc
order[1][column]: 2
order[1][dir]: desc
start: 0
length: 30
search[value]:
search[regex]: false
user_id: 2
所以我必须更改服务器端脚本以适应该情况,这是我避免的。然后作为一种解决方法,我继续使用sAjaxSource并将user_id附加到url中:
"sAjaxSource":srcUri+"?user_id="+userID+"&",
令我困扰的是为什么它们具有不同的请求参数格式。谁能解释为什么他们与众不同,每种方法之间的意义是什么?
编辑:
对不起,也许我的解释不太清楚。我在这里问的不是如何在数据表ajax中传递参数。尽管我非常感谢提及fnServerParams,这是我需要的atm。
我在这里问的是,为什么sAjaxSource和ajax之间的请求参数如此不同? 还是两种方法都有不同的用途? 我似乎在文档中找不到它。
答案 0 :(得分:1)
旧版本的DataTables(1.9-)使用了一组不同的参数 从服务器发送和接收。这样写的脚本 对于DataTables 1.10+将无法与DataTables一起使用 1.9-。但是,DataTables 1.10确实具有针对1.9-编写的脚本的兼容模式。此兼容性模式由使用触发 sAjaxSource 参数(而不是新的ajax参数) 或通过设置$ .fn.dataTable.ext.legacy.ajax = true;
当将sAjaxSource与DataTables(1.10+)一起使用时,您将触发兼容模式,该表发送和接收的参数集与旧版DataTables(1.9-)不同。