我可以在jQuery中将值数组作为fnServerParams传递

时间:2013-07-09 15:38:33

标签: jquery jquery-datatables

我正在使用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值传递?任何帮助将不胜感激。

1 个答案:

答案 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)。

希望有所帮助