我正在使用带有服务器端处理的数据表。我试图根据一些参数过滤表,但我无法将新的参数发送到服务器。数据表总是使用旧的参数
这就是我所拥有的
oTable = $('#mainDataTable').DataTable( {
paging: true,
searching: false,
scrollY: docHeight,
//scrollX: 300,
stateSave: false,
info: true,
"bServerSide" : true,
"sAjaxSource" : "http://myurl/"+getParameters(); //start=1&end=50&foo=bar",
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
type: "GET",
cache: false, // do not cache
url: sSource,
data: aoData,
success: function (json) {
fnCallback(json);
}
});
},
"iDisplayLength": 25,
我尝试通过调用draw(false)更新参数,但它将旧参数发送到服务器。我还尝试table.ajax.url( url ).load()
再次发送旧参数。
我浏览了datatables.net并找到了一些例子,如下面的
oTable = $('#mainDataTable').DataTable( {
paging: true,
searching: false,
scrollY: docHeight,
//scrollX: 300,
stateSave: false,
info: true,
"bServerSide" : true,
"sAjaxSource" : "http://myurl/"+getParameters(),
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
type: "GET",
cache: false, // do not cache
url: sSource,
data: {
"start": $("#start").val();
"end": $("input[name=end]").val();
"foo": $("input[name=bar]").val();
},
success: function (json) {
fnCallback(json);
}
});
},
这似乎有效,但现在我的服务器没有被传递iDisplayStart
,iDisplayLength
等我依赖它进行分页
知道我做错了吗?
答案 0 :(得分:0)
你应该使用函数而不是变量,它应该是:
function getPostData(tableParams) {
return $.param(tableParams) + "&" + $.param({
ID:$('#Id').val()
});
}
然后:
ajax: {
url:proxyPath + modulePath +'getList',
data: getPostData
},
你可以使用它,享受
答案 1 :(得分:0)
也许这个例子可以帮助你...
在jQuery中,每次select输入改变值时,它都会使用POST获取JSON数据,这里定义的参数是select的值,你也可以使用POST命令传递其他参数(在我的例子中是"密钥&#34):
$('select').change(function() {
var table = $('#mainDataTable').DataTable();
table.clear().draw();
$.post('scripts/fetch-some-data.php', {
key: $('select').val()
}, function(data) {
table.rows.add(data).draw();
}, 'json');
});
答案 2 :(得分:0)
你走在正确的轨道上...在服务器端代码中捕获新的参数如。
public ActionResult
Get([ModelBinder(typeof(DataTablesBinder))]
IDataTablesRequest requestModel, string start, string end, string foo)
{//all Code here }