【发布时间】:2018-10-26 00:41:14
【问题描述】:
我有允许插入多个输入的 html 表单。我只能插入第一个输入。如何通过ajax在php中插入多个值,我的HTML表单如下。
<tr>
<th>ID</th>
<td><input type="number" id="navid"></td>
</tr>
<tr>
<th>Menu IN</th>
<td><input type="text" name="menuin"></input></td>
</tr>
<tr>
<th>Menu ENG</th>
<td><input type="text" name="menueng"></input>
</td>
</tr>
用户可以动态添加输入字段(动态添加由jquery完成) 如果只有一个输入组,通过是没有问题的。但是如果用户添加多个输入,我想传递多个输入。
我已经将值传递为
$("#submit").click(function(){
var navid = $("#navid").val();
var menuin = $("input[name='menuin']").val();
var menueng = $("input[name='menueng']").val();
$.ajax({
url: 'insert_nav.php',
type: 'post',
data: {navid:navid,menuin:menuin,menueng:menueng},
success: function(data){
alert(data);
$('#nav')[0].reset();
}
});
});
我已插入由 ajax 传递的输入值,如下所示
if (isset($_POST["navid"]) && !empty($_POST["navid"])) {
$query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
$query1->bindParam(':menuin',$_POST["menuin"]);
$query1->bindParam(':menueng',$_POST["menueng"]);
$query1->bindParam(':navid', $_POST["navid"]);
$query1->execute();
$msg1 = 'Menu has inserted';
}
现在我想插入多个值。怎么办?
【问题讨论】:
-
这个
$("input[name='menuin']").val();只会获取它找到的第一个输入,而不是全部。这就是为什么您的输入只能得到一个值。我建议您改为序列化表单并将所有内容发送到 PHP。 -
同样的原则也适用于您的
#navid。你想在这里实现什么?这样我们就可以更好地格式化我们的答案,以便我们可以为您提供帮助。 -
您不能有多个具有相同 ID 的元素。这样做会使您的 HTML 无效,必须修复此问题以确保其正常工作。此外,如果您想拥有多个具有相同名称属性的表单元素,您可以使用数组,例如
<input name="menueng[]">。 -
@hungrykoala,感谢您的回复。请查看已编辑的问题
-
@hungrykoala 实际上,根据this answer 看来,使用数组形式名称更像是一项 PHP 发明,如果有多个元素同名。