我正在使用jQuery DataTables在我的表单上显示数据。我需要发送多个参数来过滤数据。
目前我正在使用:
$('.datatable').dataTable({
"sDom": "<'row'<'span3'l><'span6'f>r>t<'row'<'span5'i><'span4'p>>",
"bServerSide": true,
"sAjaxSource": //myurl,
"bProcessing": true,
"sPaginationType": true,
"bSort": true,
"iDisplayLength": 20,
"fnServerParams": function (aoData) {
if (filtersAdded === "true") {
aoData.push({ "name": "chk1", "value": true});
}
},
"fnCreatedRow": function (nRow, aData, iDataIndex) {
// Do stuff with row data
},
"bFilter": false,
"bDestroy": true
});
其中chk1,chk2,..是复选框,为简单起见,我们假设,用户将其检查为true。现在在我的代码中,我可以轻松检索chk1值,但我的要求是如果用户选择3或4个复选框(我的页面上将有7-8个复选框)?我想将数组中所有这3-4个选择的复选框值传递给代码(MVC)。
我现在正在做的是,将所有选中的复选框数据放在数组中:
var filterarray = [];
filterarray .push({ "name": "chk1", "value": true});
filterarray .push({ "name": "chk2", "value": true});
现在我如何将filterarray作为fnServerParams
值传递?任何帮助将不胜感激。
答案 0 :(得分:1)
我不知道我是否理解正确。您想要发送信息一次还是要在用户设置/取消设置复选框时刷新信息?
如果您需要为ajax请求发布数据,可以使用以下代码:
var oTable = $('#selector').dataTable( {
"sAjaxSource": "your-url",
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push( {"name": "param1", "value": 1} );
aoData.push( {"name": "param2", "value": 2} );
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": function(result){
if (result.iTotalRecords == 0) {
$("#datatable_unit_users").hide();
} else {
$("#datatable_unit_users").show();
fnCallback(result)
}
}
} );
},
...
)};
如果您需要刷新信息,可以使用API函数fnReloadAjax(http://datatables.net/plug-ins/api)。
希望有所帮助