0

我尝试了几天来解决这个问题,但到目前为止没有结果......
我要做的就是在用户选中或取消选中它时将复选框值发布到 php。

表格.php:

<?php
if (isset($_POST['box'])) {
echo $_POST['box'];
} ?> 

脚本:

<script>
$(document).ready(function() {
 $('.box').on('change', function(event) { 
  var checkbox = $(event.target);
  var isChecked = $(checkbox).is(':checked');
  $.post('/form.php', {id: checkbox.attr('id'), value: isChecked});
 });
}); 
</script> //Credit cymen

形式:

<form action="form.php" method="post">

<input id="box" class="box" name="box" type="checkbox" value="YESSSSSS!" />
<input id="box" class="box" name="box" type="checkbox" value="YESSSSSS!" />

</form>

(*) 我什么也没穿$_POST['box']

4

3 回答 3

3

您的 JavaScript 正在将此数据提交给 PHP:

 {id: checkbox.attr('id'), value: isChecked}

你有两条数据:“id”和“value”。您没有名为“box”的数据,因此$_POST['box']不会被填充。

于 2013-02-15T11:47:58.993 回答
0

我会改为:

$.post('/form.php', {name: checkbox.attr('name'), checked: isChecked, value : checkbox.val()});

在 PHP 端,您将收到:

Array
(
    [name] => box
    [checked] => true
    [value] => YESSSSSS!
)

您可以访问 POST 数据,例如:

echo $_POST['name']; // box
echo $_POST['checked']; // true/false
echo $_POST['value']; // YESSSSSS!

在 POST 请求中包含复选框值很重要,因为这是您识别哪个复选框已更改的唯一方法。

于 2013-02-15T12:03:36.943 回答
0

您发送到 form.php 的 $_POST 数组看起来不是 $_POST['box']。它看起来像这样:

array(2) {["id"]=>string(3) "box" ["value"]=> string(4) "true"}

所以你可以得到像 thist $_POST['id'] 或 $_POST['value'] 这样的变量。你在这个片段中声明 JS 中的变量:{id: checkbox.attr('id'), value: isChecked}。

最好使用 var_dump 在 PHP 中检查您在 vars 中的内容,例如。var_dump($_POST)。

使用 Firebug 插件到 FF,调试 AJAX。

于 2013-02-15T11:57:04.873 回答