【问题标题】:How to pass value as array by input field如何通过输入字段将值作为数组传递
【发布时间】:2015-04-12 17:01:18
【问题描述】:

如果用户选择了一个复选框,相关值会被 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;

【问题讨论】:

    标签: php jquery html


    【解决方案1】:

    试试这样的:

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

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

    【讨论】:

    • 我不想因为某些编码目的而爆炸。我必须直接使用 foreach 循环。
    • 你能用这个语法吗? explode(",",$_POST['selected'])[1]
    • 不行,我得直接用foreach循环
    【解决方案2】:

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

    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 = "";
    
        });
    
    });
    

    【讨论】:

    • 我提到的代码实际上将值作为逗号分隔的字符串发送,因为当我回显 $_POST['selected'] 时,我发现选定的值是逗号分隔的值。如果您的意图是以逗号分隔发送值,那么我的代码比您更简单、更短。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多