如何通过输入字段将值作为数组传递

时间:2015-02-12 04:33:25

标签: php jquery html

如果用户选中了一个复选框,相关值将由jQuery存储在隐藏的输入字段中,并在表单提交后传递给PHP页面。如果用户选择多个复选框,则将相关值作为数组添加到隐藏输入字段中。但在提交表单后,我发现输入字段数组不是数组,我无法从输入字段中获取数组。

页面的HTML:

    <input type="hidden" name="selected" id="selected" value="" />
    <input type="checkbox" name="check_list[]" class="check_list" value="'.$row['id'].'" />
    <input type="checkbox" name="check_list[]" class="check_list" value="'.$row['id'].'" />
    <input type="checkbox" name="check_list[]" class="check_list" value="'.$row['id'].'" />

用于在选中任何复选框时添加ID的jQuery代码:

    $(document).ready(function(){
    var ids = [];
    $(".check_list").change(function(){  //  <-----correct here
      code = $(this).val();
      ids.push(code);
      $("#selected").val(ids);
      });
    });

PHP的表单处理

 foreach($_POST['selected'] as $key=>$value){
     foreach($value as $keygen){
      echo $keygen.'<br />';
     }
    }

但我无法通过上面的方式获得所选的复选框值。如果我改变PHP的处理部分,如下所示,如果用户选择所有三个复选框,则:

   echo $_POST['selected'];

显示为23,56,57。 (我想这些是所选复选框的值。)

如何以这种方式实现上述内容,以便我可以将所选值作为输入字段的数组传递,并可以相应地获取它们。我想要这样的东西:

 $_POST['selected'] = array(23,56,57)

这样我就可以获得这样的特定数组元素:

 $_POST['selected'][1] = 56;

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

$myArray=explode(",",$_POST['selected']);
$myArray[1] = 56;

foreach(explode(",",$_POST['selected']) as $key=>$value){
  foreach($value as $keygen){
    echo $keygen.'<br />';
  }
}

答案 1 :(得分:0)

不是在隐藏字段中设置数组,而是在隐藏字段中设置逗号分隔字符串,并将服务器端上的值拆分并存储到数组中以进行访问。

HTML

 <input type="checkbox" value="one"/>
 <input type="checkbox" value="two"/>
 <input type="checkbox" value="three"/>
 <input type="hidden" id="data"/>    
 <button>Submit</button>

的Javascript

$(document).ready(function() {
    var data = "";
    $("button").click(function() {
        $("input:checkbox").each(function() {
            if ($(this).attr("checked") === "checked") {
                data = data + $(this).val() + ",";
            }
        });
        data = data.substring(0, data.lastIndexOf(","));
        //setting the comma separated string into the hidden element
        $("#data").val(data);
        data = "";

    });

});