2013-07-09 4 views
3

Я использую jQuery DataTables для отображения данных в моей форме. У меня есть требование, когда мне нужно отправить несколько параметров для фильтрации данных.Могу ли я передать массив значений как fnServerParams в jQuery

В настоящее время я использую:

$('.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, .. есть галочки и для простоты, позволяет предположить, пользователь проверил это, как верно. Теперь в моем коде я могу легко получить значение 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

Я не знаю, правильно ли я вас понял. Вы хотите отправить информацию один раз или хотите обновить информацию, когда пользователь установил/снял флажки?

Если вам нужно POST данные для запроса 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).

Надеюсь, это поможет

Смежные вопросы