如何使用jquery.ajax发送的PHP处理多个复选框?
我正在用jquery.ajax方法异步发送一个表单。在PHP端,它接收到正确的数组(我想),但由于某种原因,当我试图用普通的圆圈提取复选框值时,它会向我显示一条错误消息。我能做些什么来修复它 这是我看到的警告信息: 警告:第206行/home/mybestfa/public_html/ajax/verifica.php中为foreach()提供的参数无效 如果我尝试回显给定的数组,我会在下面看到这一点。我想这个字符串会产生问题,因为实际上它看起来不像一个普通数组。它就像一个GET字符串: categoria%5B%5D=bellezza和categoria%5B%5D=educazione 最后一个问题是,如何从数组中提取复选框值 HTML: PHP:如何使用jquery.ajax发送的PHP处理多个复选框?,php,jquery,ajax,Php,Jquery,Ajax,我正在用jquery.ajax方法异步发送一个表单。在PHP端,它接收到正确的数组(我想),但由于某种原因,当我试图用普通的圆圈提取复选框值时,它会向我显示一条错误消息。我能做些什么来修复它 这是我看到的警告信息: 警告:第206行/home/mybestfa/public_html/ajax/verifica.php中为foreach()提供的参数无效 如果我尝试回显给定的数组,我会在下面看到这一点。我想这个字符串会产生问题,因为实际上它看起来不像一个普通数组。它就像一个GET字符串: cat
if(设置($\u POST['submit\u step1']))
{
$errorForm=false;
$categories=$\u POST['fields\u step1'];
foreach($categories作为$category)
{
echo“创建:$category
”;
}
}
PS:我粘贴了用英语翻译意大利语变量的代码。因此,如果我忘了翻译一些东西,我深表歉意。
它看起来不像普通数组。它就像一个GET字符串
…是的,$(“#form_step1”)就是这样做的。serialize()
已经完成了。因此,您将已经序列化的数据放入一个对象中,jQuery将再次序列化该对象(当您通过data
选项传递它时)。因此,该部分最终被双重序列化。当PHP对POST数据进行反序列化时,该部分仍然是单序列化的,因此它是一个不能循环的字符串。通常,您应该将表单序列化并直接将其传递给数据,例如数据:$('#form_step1')。serialize()
。但是serialize()不会捕获按钮字段,因此if(isset($\u POST['submit\u step1'])
将不会为真-您最好使用一个包含该值的隐藏字段,以便它继续为真passed@ADyson非常感谢。它起作用了!
<form id="form_step1" action="ajax/verify.php" method="POST">
<?php
$query="SELECT name FROM category";
$result=mysqli_query($connessione, $query);
$num_check=0;
while ($row=mysqli_fetch_array($result)) {
$category_name=$row['name'];
$num_check=$num_check+1;
?>
<label for="check[<?php echo $num_check; ?>]">
<input type="checkbox" id="check[<?php echo $num_check; ?>]" name="category[]" value="<?php echo $category_name; ?>">
<?php echo $category_name; ?></label>
<?php
}
?>
<p id="result_step1"><ul></ul></p>
<input type="submit" id="button_step1" name="button_step1" class="form_button" value="Continue">
</form>
$(document).ready(function() {
$("#form_step1").submit(function(event) {
event.preventDefault();
var fields_step1=$('#form_step1').serialize();
var submit_step1=$("#button_step1").val();
$.ajax({
url: "ajax/verify.php",
method: "POST",
data: {fields_step1: fields_step1,
submit_step1: submit_step1},
dataType: "text",
success: function(risposta,status){
console.log(risposta);
if(status=="success") {
$("#risultato_step1").html(risposta);
if (risposta == "prosegui") {
$("#risultato").html("");
}
}
})
}
if(isset($_POST['submit_step1']))
{
$errorForm=false;
$categories=$_POST['fields_step1'];
foreach ($categories as $category)
{
echo "Founded: $category<br>";
}
}