我正在努力解决这个问题,但到目前为止还没有结果...... 我想要做的就是在用户选中或取消选中时将复选框值POST到php。
form.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']
答案 0 :(得分:3)
您的JavaScript正在将此数据提交给PHP:
{id: checkbox.attr('id'), value: isChecked}
你有两条数据:&#34; id&#34;和&#34;价值&#34;。您没有一个名为&#34; box&#34;的数据,因此不会填充$_POST['box']
。
答案 1 :(得分:0)
$ _ POST数组看起来不是$ _POST ['box']。它看起来像这样:
array(2) {["id"]=>string(3) "box" ["value"]=> string(4) "true"}
所以你可以得到像这样的$ _POST ['id']或$ _POST ['value']的变种。你在这个片段中声明JS中的变量:{id:checkbox.attr('id'),value:isChecked}。
最好使用var_dump检查PHP中你所拥有的内容,例如。的var_dump($ _ POST)。
使用Firebug插件来调试AJAX。
答案 2 :(得分: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请求中包含复选框值非常重要,因为这是识别哪个复选框已更改的唯一方法。