如何使用jQuery将复选框值传递给数组?

时间:2011-08-04 04:29:06

标签: javascript jquery html arrays checkbox

我有以下复选框,我想将选中的值传递给数组,以便我可以执行ajax帖子。但是,我遇到了一个错误,我不确定我哪里出错... 如何将值传递给数组以及如何检索它们?

HTML

<input type="checkbox"  name="newCheckboxes" value="1"  />
<input type="checkbox"  name="newCheckboxes" value="2"  />
<input type="checkbox"  name="newCheckboxes" value="3"  />

脚本(不工作)

 var allFields = $( [] );
 $("#newCheckboxes:checked").each(function() {
         allFields.add( $(this).val() );
 });

 $.ajax(
      {
        type:"POST",
        url: "PostedHere",
        data:{
             checkedValues: allFields

              }
         });

3 个答案:

答案 0 :(得分:1)

你只需要:

$.ajax({
    type:"POST",
    url: "PostedHere",
    data: { checkedValues: $("#newCheckboxes:checked").serialize() } 
});
// checkedValues: "newCheckboxes=1&newCheckboxes=2" etc..

答案 1 :(得分:0)

使用karim79代码构思:

$.post('URL', $('[name="newCheckboxes"]:checked').serializeArray(), function(data){
  //data
});

答案 2 :(得分:0)

我更喜欢做的是:创建一个新对象并将所有复选框'Value'和'Ischecked'添加到数组(访问),然后通过Json将其传递给页面:

 $(document).ready(function () {
                    $("#btnSave").click(function () {
                         event.preventDefault();
                         $("#newCheckboxes").each(function () {
                         var data= new Object()
                         var access = new Array();
                         access.ChValue = $(this).attr("value");
                    if ($(this).attr("checked") == "checked") access.ChChecked = true;
                    data.push(access);
                });

 $.ajax({
                type: 'POST',
                url: '@Url.Content("~/URLofPage")',
                data: $.json.encode(data),
                dataType: 'json',
                contentType: 'application/json; charset=utf-8'

            });
});
});

请不要忘记将Json引用添加到您的页面:

<script src="../../../Scripts/jquery.json.js" type="text/javascript"></script>