1

AJAX を使用して PHP ページに投稿するチェックボックスのセットが必要ですが、投稿後、同じチェックボックスを使用して、指定された数まで、同じ PHP ページに別の選択セットを送信できるようにしたいと考えています。セットを作成し、そのセットを PHP ページのデータとして使用します。

これがどのように実装されるかわかりません。何か案は?

index.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";
}
4

2 に答える 2

0

ajax 呼び出しの success 関数を使用します。チェックされた各ボックスの値を取得し、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');
      });
    }

  });
});
于 2012-06-28T02:17:35.923 に答える
0

時間の経過とともにデータが優先されるようにする場合は、セッションを使用する必要があります。したがって、次のように使用できます。

<?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 の場合は、次のようにリセットする必要があります。

<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>
于 2012-06-28T02:19:51.823 に答える