AJAX-PHP组合:$ .post复选框值到PHP

时间:2013-02-15 11:44:21

标签: php javascript jquery ajax checkbox

我正在努力解决这个问题,但到目前为止还没有结果...... 我想要做的就是在用户选中或取消选中时将复选框值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']

我什么都没得到

3 个答案:

答案 0 :(得分:3)

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

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

你有两条数据:&#34; id&#34;和&#34;价值&#34;。您没有一个名为&#34; box&#34;的数据,因此不会填充$_POST['box']

答案 1 :(得分:0)

您发送到form.php的

$ _ 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请求中包含复选框值非常重要,因为这是识别哪个复选框已更改的唯一方法。