如何使用jQuery post方法将选定的复选框值传递给另一个servlet(不低于一个)?
这是我使用json
的html页面上的generationg复选框的servlet代码for(int i=0;i<roles.size();i++){
JSONObject msg = new JSONObject();
msg.put("selector", "#roles");
//<input type=radio name="radio" value="<%=bean.getSno()%>"></td>
msg.put("msg",
"<input type=checkbox id="+'"'+"checkedroles"+'"'+"name="+'"'+"checkedroles"+'"'
+"value="+roles.get(i)+">"+roles.get(i)+"<br>");
messages.put(msg);
}
这是jquercode
*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
$(document).ready(function(){
//global vars
var UserName = $("#UserName"); //user name field
var FirstName = $("#FirstName"); //first name
var LastName=$("#LastName");
var StreetAdress=$("#StreetAdress");
var City=$("#City");
var Province=$("#Province");
var Organization=$("#Organization");
var email=$("#email");
var phone=$("phone");
var checkedroles=$("#checkedroles");
var selected = new Array();
function checkCommentsForm(){
return true;
}
$("input:checkbox[name=checkedroles]:checked").each(function() {
selected.push($(this).val());
});
//When form submitted
$("#Reg").submit(function(){
if(checkCommentsForm()){
$.ajax({
type: "post",
url: "loginProcess.jsp",
data: {user : UserName.val(), fname : FirstName.val(),lname : LastName.val()
,stAddress:StreetAdress.val(),city:City.val(),prov:Province.val(),org:Organization.val()
,mail:email.val(),ph:phone.val(),'ch[]':selected},
success: function(data) {
}
});
}
});
});
也请告诉我如何在servlet中检索数组
答案 0 :(得分:2)
你没有展示你的HTML,但从它的外观来看,这些值似乎是一种形式。
然后您可以使用('#Reg').serialize()代替。这将Encode a set of form elements as a string for submission.
- 它将包含所有成功的控件,因此所有已选中的复选框都将自动包含在所有已启用的文本字段中。
$("#Reg").submit(function(){
if(checkCommentsForm()){
$.ajax({
type: "post",
url: "loginProcess.jsp",
data: $(this).serialize(),
success: function(data) {
}
});
}
});
要检索servlet中提交的值,请使用ServletRequest#getParameter()
和ServletRequest#getParameterValues()
方法。前者当你只有一个参数值(例如,一个测试字段)时,后者当你可以有多个具有该参数名称的值时,例如,多个具有相同名称的复选框就是你问题中的情况。所以你在servlet中写了这样的东西:
String [] checked = request.getParameterValues("checkboxname");