如何使用相同的复选框多次提交以创建多组选择


How can I use the same checkboxes to submit multiple times to create multiple sets of selections?

我希望有一组使用 AJAX 发布到 PHP 页面的复选框,但在发布后,我希望能够使用相同的复选框将另一组选择发送到同一 PHP 页面,最多指定数量的集,然后将这些集用作 PHP 页面中的数据。

我不知道这将如何实施。有什么想法吗?

索引.php:

<form id="checkboxes">
  <input type="checkbox" id="1" name="checkboxes[]" value="1" />
  <input type="checkbox" id="2" name="checkboxes[]" value="2" />
  <input type="checkbox" id="3" name="checkboxes[]" value="3" />
  <input type="checkbox" id="1" name="checkboxes[]" value="4" />
  <input type="checkbox" id="1" name="checkboxes[]" value="5" />
  <input type="button" id="button" name="submit" value="Submit" />
</form>
<script type="text/javascript">
  $(function() {
    $("#button").click(function() {
    $.ajax({
      type: "POST",
      url: "process.php",
      data: $("form#checkboxes").serialize(),
      success: function(data) {
        $("#div").load('success.php')
      }
    });
    })
  })
</script>

工艺.php:

$data = array();
foreach($_POST['checkboxes'] as $key => $value){
  $data[] = "$value";
}
如果您希望

数据随着时间的推移而占主导地位,则需要使用会话。因此,您可以通过以下方式使用它:

<?php
    session_start();
    if (!isset($_SESSION["data"]))
        $_SESSION["data"] = array();
    foreach($_POST['checkboxes'] as $key => $value){
      $_SESSION["data"] = "$value";
    }
    // Print out the final array, if there's a parameter final!
    if (isset($_GET["final"]))
        foreach ($_SESSION["data"] as $data)
            echo $data;
?>

对于 JavaScript,你需要重置 thingy:

<form id="checkboxes">
    <input type="checkbox" id="1" name="checkboxes[]" value="1" />
    <input type="checkbox" id="2" name="checkboxes[]" value="2" />
    <input type="checkbox" id="3" name="checkboxes[]" value="3" />
    <input type="checkbox" id="1" name="checkboxes[]" value="4" />
    <input type="checkbox" id="1" name="checkboxes[]" value="5" />
    <input type="button" id="button" name="submit" value="Submit" />
</form>
<script type="text/javascript">
    $(function() {
        $("#button").click(function() {
            $.ajax({
                type: "POST",
                url: "process.php",
                data: $("form#checkboxes").serialize(),
                success: function(data) {
                    $("#div").load('success.php');
                    $("form#checkboxes > input[type='checkbox']").removeAttr('checked');
                }
            });
        });
    });
</script>

您将使用 ajax 调用的成功函数。我们将获取每个复选框的值,然后通过 ajax 提交表单,防止默认,然后在表单提交后取消选中所有框。

$('something').submit(function(e){
  e.preventDefault();
  var checked = [];
  $.each($('input[type=checkbox]'), function(i,v){
    if($(this).is(':checked')){
      checked.push($(this).val());
    }
  });
  $.ajax({
    url: 'someurl.ext',
    type: 'post',
    data: checked,
    success: function(data){
      $.each($('input[type=checkbox]'), function(i,v){
        $(this).prop('checked', false');
      });
    }
  });
});