Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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
如何将复选框数组从FormData传递到php_Php_Jquery_Ajax_Checkbox_Form Data - Fatal编程技术网

如何将复选框数组从FormData传递到php

如何将复选框数组从FormData传递到php,php,jquery,ajax,checkbox,form-data,Php,Jquery,Ajax,Checkbox,Form Data,在FormData的情况下,复选框数组不能通过ajax传递给php。在未使用FormData的情况下,以下脚本工作正常。所以我假设问题是在添加FormData或从中传递时出现的。它返回为foreach()提供的无效参数。 复选框不是表单元素的一部分,因此 <input type="checkbox" id="menu" name="menu[]" value="1"> <input type="checkbox" id="menu" name="menu[]" valu

在FormData的情况下,复选框数组不能通过ajax传递给php。在未使用FormData的情况下,以下脚本工作正常。所以我假设问题是在添加FormData或从中传递时出现的。它返回为foreach()提供的
无效参数。

复选框不是表单元素的一部分,因此

  <input type="checkbox" id="menu" name="menu[]" value="1">
  <input type="checkbox" id="menu" name="menu[]" value="2">
  <input type="checkbox" id="menu" name="menu[]" value="3">

  <form id="form">
  ...........
  </form>
PHP

foreach ($_POST["navid"] AS $key => $item){               
    $query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
    $query1->bindParam(':menunin',$_POST["menunin"][$key]);
    $query1->bindParam(':menueng',$_POST["menueng"][$key]);
    $query1->bindParam(':navid',$item);
    $query1->execute();
    echo 'Menu has inserted';     
}

php代码中的“是”问题:

您正在传递逗号分隔的值,因此首先分解并使用

$data = explode("," ,$_POST["navid"]);
foreach ($data AS $key => $item){
    $query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
    $query1->bindParam(':menunin',$_POST["menunin"][$key]);
    $query1->bindParam(':menueng',$_POST["menueng"][$key]);
    $query1->bindParam(':navid',$item);
    $query1->execute();
    echo 'Menu has inserted';
}

你的代码是完美的。工作很好。用小提琴看。请参见网络选项卡中的问题,但您不应该只准备一次,而不是在循环中使用
prepare()
。@bhumisah,但它返回了从php为foreach()提供的
无效参数。请看php代码,可以吗?做一个
print\r($\u POST['navid'])
数组似乎无效hanks,分解后,foreach子句工作,但生成以下错误
$query1->bindParam(':menunin',$\u POST[“menunin”][$key])处只能通过引用传递变量
;我尝试了很多,但为什么会出现这个错误?在变量中使用$_POST[“menunin”][$key]和$_POST[“menueng”][$key],并将变量传递给bindparam值
$data = explode("," ,$_POST["navid"]);
foreach ($data AS $key => $item){
    $query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
    $query1->bindParam(':menunin',$_POST["menunin"][$key]);
    $query1->bindParam(':menueng',$_POST["menueng"][$key]);
    $query1->bindParam(':navid',$item);
    $query1->execute();
    echo 'Menu has inserted';
}