我正在尝试使用ajax调用将一些数据从jsp发送到servlet;在我的java脚本中,我有以下方法:
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);
}
问题是cellPhones为null,提示警报不为空,有人可以帮我吗?
答案 0 :(得分:0)
尝试将JS数组放入一些隐藏元素(作为网站html的一部分),该形式将发送到servlet,如:
var ele = document.createElement("input");
ele.setAttribute("hidden","");
ele.setAttribute("value",cellPhones.toString());
答案 1 :(得分:0)
为什么不创建一个将数组作为属性的类。设置字段值,然后将obj设置为request。这不仅可以帮助您进入servlet,还可以用于将一些数据发送回您的jsp。
答案 2 :(得分:0)
在ajax中,您将数值发送为数组:
url= "cellPhone[]=121212&cellPhone[]=121212&cellPhone[]=121212"
但是,在servlet中,您试图将值作为单个值。您需要将值作为数组[]
获取。试试,
String[] cellPhones=request.getParameterValues("cellPhones[]");
|- Use array sign
答案 3 :(得分:0)
我解决了这个问题,我所要做的就是将手机转换为字符串,不需要隐藏元素我只是添加了这行代码:
var cellPhone=cellPhones.toString();