jQuery ajax数据表正在按以下数组发送过滤器的参数 如何更改它发送实际值和列名?
Parameters: {
"draw"=>"2",
"columns"=>"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]", "order"=>"[object Object]",
"start"=>"0",
"length"=>"10",
"search"=>"[object Object]"
}
答案 0 :(得分:3)
在Datatable配置中添加fnServerData。
"fnServerData": function (sSource, aoData, fnCallback, oSettings) {
$.ajax({
"dataType": 'json',
"type": "GET",
"url": "/Home/AjaxGetJsonData",
"data": oSettings.oAjaxData,
"Content-Type": "application/json",
"success": function (json) {
fnCallback(json);
}
});
}
答案 1 :(得分:2)
对我来说同样的问题。我发现原因是我过去设置的jquery jQuery.ajaxSettings.traditional = true 。删除此设置对我有用
答案 2 :(得分:0)
如果您使用的是fnServerData,那可能就是您的问题。您可以转而使用preXhr.dt。
var oTable = $('#my-table')
.on('preXhr.dt', function ( e, settings, data ) {
...
}).DataTable({
"serverSide": "true",
"ajax": '/indexData',
...
});
这就是原因:
使用fnServerData会触发_fnBuildAjax函数中的一个部分,该部分将数据对象转换为数组。这反过来触发了jQuery.ajax中的逻辑,它期望"如果传入一个数组,则假设它是一个表单元素数组。"
因此它使用非常简单的非递归方法将参数转换为参数字符串。由于它是非递归的,因此第二级对象的转换就像[object + Object]一样,而不是它们的嵌套属性等。