我有一个带复选框的表单。可以选择一个或多个发送到db。
该表格用于登记资产损失,因此与" current_id"有关系。这是独一无二的资产。 1:n关系。
因为我需要将current_id作为外键发送,所以我将它推送到表单数组上
像这样formData.push({name: 'id', value: current_id});
只选择一个复选框时,此方法正常。 但是当我检查了多个选项时,我无法发送到服务器。 我很难解决这个问题。我已经研究过使用map,但我不知道如何实现它以将正确的数组发送到数据库。
非常感谢帮助
$('form').submit(function(e){
e.preventDefault();
let formData = $(this).serializeArray();
formData.push({name: 'id', value: current_id});
});
$.post({
type: 'POST',
url: '/api',
data: formData
})
// what i tried..
// for multple checked boxes
// this did not work
//formData.forEach(function (data){
// data.push({name: 'id', value: current_id});
// $.post({
// type: 'POST',
// url: '/api',
// data: formData
// })
//})

<form id="damages">
<input type="checkbox" name="damage" value="loose" checked="checked" />
<input type="checkbox" name="damage" value="broken" />
</form>
&#13;
答案 0 :(得分:1)
您必须在复选框名称后使用[]
。在PHP代码中,只需var_dump($_POST['damage']);
即可获得数组值。
HTML CODE:
<form id="damages">
<input type="checkbox" name="damage[]" value="loose" checked="checked" />
<input type="checkbox" name="damage[]" value="broken" />
</form>
说明:当您提供name="damage"
时,它只会对damage
键保留一个值,但当我们给出name =“damage []”时,它将会保留对damage
键的数组。
查看此article以获取详细说明和示例。
更新回答: 根据评论中提供的详细信息,请按照以下代码进行解决。
我们可以通过map()
功能获取所选复选框的列表,然后将其推送到formData
。
$('form').submit(function(e){
e.preventDefault();
let formData = $(this).serializeArray();
var selectedIds = $("input:checkbox:checked").map(function () {
return $(this).val();
}).get();
formData.push({name: 'id', value: current_id});
formData.push({name: 'selectedIds', value: selectedIds});
$.post({
type: 'POST',
url: '/api',
data: formData
});
});