2017-02-05 5 views
0

У меня есть JQuery DataTable с возможностью мультиселектора. Кроме того, существует кнопка и элемент DIV:Отправка массива выделенных строк DataTable в jsp

<script> 
      $(document).ready(function() { 
         var tablemovChAf = $('#movChAf').DataTable({ 

         //multiselect  
         $('#movChAf tbody').on('click', 'tr', function() { 
           $(this).toggleClass('selected');    
         }); 

      }) 
    </script> 

    <button name="sbmsimulate" class="button-input btn btn-info" id="sbmsimulate" style="info" type="button" > 
    <div id="divAccMovement"></div> 

То, что я хочу, чтобы отправить все выбранные строки в «accMovement.jsp», нажав на кнопку.

$('#sbmsimulate').click(function() { 

    $('#divAccMovement').load('accMovement.jsp',{ 
     mode:"2", 
     arrayData:tablemovChAf.rows('.selected').data() 
    }); 

});  

my jsp accMovement.jsp выглядит следующим образом;

<% 
String str_mode=request.getParameter("mode").toString(); 
String[] arrayData=null; 

if (str_mode.equals("2")) { 
    arrayData=request.getParameterValues("arrayData[]"); 
} 

%> 

Я попытался решение: Passing javascript array to servlet (На самом деле, это то, что я сделал), но оно не работает для меня. Ничего не происходит, когда я нажимаю кнопку.

я отладки, и кажется, что проблема с:

arrayData:tablemovChAf.rows('.selected').data() 

, потому что, если он прокомментировал (а «если» заявление в СПЯ комментируется также) он работает. Однако мне нужно отправить выбранные строки на страницу jsp.

Каков правильный способ отправки массива из клиента и получения массива на сервере?

Заранее спасибо.

ответ

0

Я нашел решение не столь умный для моего случая (ниже этого jQuery DataTables Getting selected row values), это не совсем то, что мне нужно, но я могу добавить некоторые заявления позже для того чтобы достигнуть моей цели

$('#sbmsimulate').click(function() { 

     var ids = $.map(tablemovChAf.rows('.selected').data(), function (item) { 
      return item[11] 
     }); 

     $('#divAccMovement').load('accMovement.jsp',{ 
      mode:"2", 
      arrayData:ids 
      }); 
    }); 

Колонном индекса 11 является идентификатором моей dataTable, поэтому на стороне сервера я могу получить всю информацию о каждой строке.

Однако я хотел бы избежать этого шага:

var ids = $.map(tablemovChAf.rows('.selected').data(), function (item) { 
     return item[11] 
    }); 

и указать все в параметре, что-то вроде этого:

arrayData:tablemovChAf.rows('.selected').data()