AJAX-PHP组合:$。将复选框值发布到PHP

AJAX-PHP组合:$。将复选框值发布到PHP,php,javascript,jquery,ajax,checkbox,Php,Javascript,Jquery,Ajax,Checkbox,我花了好几天的时间试图解决这个问题,但到目前为止没有结果… 我所要做的就是在用户选中或取消选中复选框时将其值发布到php form.php: <?php if (isset($_POST['box'])) { echo $_POST['box']; } ?> <script> $(document).ready(function() { $('.box').on('change', function(event) { var checkbox = $(even

我花了好几天的时间试图解决这个问题,但到目前为止没有结果…
我所要做的就是在用户选中或取消选中复选框时将其值发布到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>

脚本:

<?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>

$(文档).ready(函数(){
$('.box')。在('change',函数(事件){
var复选框=$(event.target);
var isChecked=$(复选框).is(':checked');
$.post('/form.php',{id:checkbox.attr('id'),value:isChecked});
});
}); 
//信用西门
表格:

<?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>


(*)我在
$\u POST['box']

上什么也没有得到您的JavaScript正在向PHP提交此数据:

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

这里有两条数据:“id”和“value”。您没有名为“box”的数据块,因此不会填充
$\u POST['box']

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

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

这里有两条数据:“id”和“value”。您没有一段名为“box”的数据,因此将不会填充
$\u POST['box']

$\u发送到form.php的POST数组看起来不是$\u POST['box']。看起来是这样的:

array(2) {["id"]=>string(3) "box" ["value"]=> string(4) "true"}
因此,您可以访问像这样的变量:t$\u POST['id']或$\u POST['value']。您正在这个片段中的JS中声明变量:{id:checkbox.attr('id'),value:isChecked}

使用var_dump(例如var_dump($\u POST))在PHP中检查您在vars中拥有的内容是很好的


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

$\u发送到form.php的POST数组看起来不是$\u POST['box']。看起来是这样的:

array(2) {["id"]=>string(3) "box" ["value"]=> string(4) "true"}
因此,您可以访问像这样的变量:t$\u POST['id']或$\u POST['value']。您正在这个片段中的JS中声明变量:{id:checkbox.attr('id'),value:isChecked}

使用var_dump(例如var_dump($\u POST))在PHP中检查您在vars中拥有的内容是很好的

将Firebug插件用于FF,以调试AJAX。

我将更改为:

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

我将更改为:

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

首先,每个复选框的id必须是唯一的!验证你的html。。。我必须是独一无二的,但我有很多。php怎么知道我指的是哪一个?@wizard一般来说,输入的
name
属性对应于在发布表单时包含其值的请求参数。@wizard,元素
id
永远不会发送到服务器,只有它的
name
value
。对于您在这里执行的操作,不需要
id
,因为您使用类名来选择复选框。首先,每个复选框的id必须是唯一的!验证你的html。。。我必须是独一无二的,但我有很多。php怎么知道我指的是哪一个?@wizard一般来说,输入的
name
属性对应于在发布表单时包含其值的请求参数。@wizard,元素
id
永远不会发送到服务器,只有它的
name
value
。对于您在这里执行的操作,不需要
id
,因为您使用类名来选择复选框。您的意思是:
{id:checkbox.attr('box'),value:isChecked}
?试试看-它不起作用。@向导-不。你没有
是吗?这仍然会提交
id
一些内容,并且您正在数据中查找
。如果您想将
id
作为
$\u POST['box']
提交,那么
{box:…
。您的意思是:
{id:checkbox.attr('box'),value:isChecked}
?试试看-它不起作用。@向导-不。你没有
,是吗?那仍然会提交
id
一些东西,你正在数据中寻找
box
。如果你想提交
id
作为
$\u POST['box']
,那么
{box:…
。不幸的是,它仍然不起作用……尽管一切似乎都在正确的位置。不幸的是,它仍然不起作用……尽管一切似乎都在正确的位置。