2015-04-18 5 views
3

Я пытаюсь отправить некоторые данные из jsp в сервлет с помощью ajax-вызова; В моей Java Script У меня есть следующий метод:Как передать массив из jsp в сервлет

function sendMessage(){ 
     var cellPhones=[]; 
     var title=$('#subject').val(); 
     var text=$('#smsText').val(); 
     var groupsName=$('#dg').datagrid('getSelections'); 
     for(var i=0;i<groupsName.length;i++){ 
      cellPhones.push(groupsName[i].cellphone); 
     } 
     alert(cellPhones); 

     $.ajax({ 
      type:"POST", 
      url:"<%=basePath%>/SendMsgServlet?flag=sendSms", 
      data:{ 
       title:title, 
       text:text, 
       cellPhones:cellPhones 
      } 
     }).done(function(){ 
      alert("ok"); 
     }) 
    } 

и в моем методе doPost у меня есть:

if("sendSms".equals(flag.trim())){ 
     String title=request.getParameter("title"); 
     String text=request.getParameter("text"); 
     String[] cellPhones=request.getParameterValues("cellPhones"); 

     this.sendSms(title,text,cellPhones,request,response); 
    } 

Проблема заключается в том, что мобилка имеет нулевое значение, гайка предупреждение не является нулевым, может кто-нибудь Помоги мне, пожалуйста?

ответ

0

Попробуйте положить JS массив в какой-то скрытый элемент (как часть HTML на сайте) по форме, которая собирается быть отправить сервлет как:

var ele = document.createElement("input"); 
ele.setAttribute("hidden",""); 
ele.setAttribute("value",cellPhones.toString()); 
0

Почему бы вам не создать класс, который будет иметь массив как атрибут. установите значение поля, а затем установите obj для запроса. Это не только поможет вам в сервлете, но также может использоваться, если вы хотите отправить некоторые данные обратно на ваш jsp.

0

В AJAX вы отправляете значения в массиве как:

url= "cellPhone[]=121212&cellPhone[]=121212&cellPhone[]=121212" 

Но в сервлет вы пытаетесь получить значение как одно значение. Вам нужно получить значения как массив []. Попробуйте,

String[] cellPhones=request.getParameterValues("cellPhones[]"); 
                  |- Use array sign 
0

Я решил проблему, Все, что я должен был сделать, чтобы преобразовать мобильные телефоны в строку, не нужно скрытый элемент, я просто добавил эту строку кода:

var cellPhone=cellPhones.toString(); 
+0

ли вы пробовали мой ответ ? – Masudul

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