我有一个带有复选框的表单。可以选择一个或多个发送到db。
该表格用于登记 Assets 损失,因此与唯一 Assets “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>
最佳答案
您必须在复选框名称后使用[]
。在 PHP 代码中,只需 var_dump($_POST['damage']);
您将获得值数组。
HTML 代码:
<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
});
});
关于javascript - 如何将多个检查值发送到数据库并将值附加到每个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48854973/