Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jquery.ajax发送的PHP处理多个复选框?_Php_Jquery_Ajax - Fatal编程技术网

如何使用jquery.ajax发送的PHP处理多个复选框?

如何使用jquery.ajax发送的PHP处理多个复选框?,php,jquery,ajax,Php,Jquery,Ajax,我正在用jquery.ajax方法异步发送一个表单。在PHP端,它接收到正确的数组(我想),但由于某种原因,当我试图用普通的圆圈提取复选框值时,它会向我显示一条错误消息。我能做些什么来修复它 这是我看到的警告信息: 警告:第206行/home/mybestfa/public_html/ajax/verifica.php中为foreach()提供的参数无效 如果我尝试回显给定的数组,我会在下面看到这一点。我想这个字符串会产生问题,因为实际上它看起来不像一个普通数组。它就像一个GET字符串: cat

我正在用jquery.ajax方法异步发送一个表单。在PHP端,它接收到正确的数组(我想),但由于某种原因,当我试图用普通的圆圈提取复选框值时,它会向我显示一条错误消息。我能做些什么来修复它

这是我看到的警告信息: 警告:第206行/home/mybestfa/public_html/ajax/verifica.php中为foreach()提供的参数无效

如果我尝试回显给定的数组,我会在下面看到这一点。我想这个字符串会产生问题,因为实际上它看起来不像一个普通数组。它就像一个GET字符串: categoria%5B%5D=bellezza和categoria%5B%5D=educazione

最后一个问题是,如何从数组中提取复选框值

HTML:

PHP:

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>";
  }
}