使用jQuery servlet传递选中的复选框

时间:2011-04-17 15:11:21

标签: java jquery servlets

如何使用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中检索数组

1 个答案:

答案 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");