javascript - 如何将多个检查值发送到数据库并将值附加到每个对象?

标签 javascript node.js ajax forms checkbox

我有一个带有复选框的表单。可以选择一个或多个发送到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/

相关文章:

javascript - 如何模糊 iframe 弹出窗口的背景

javascript - Mongoose "Schema hasn' t 已注册”尝试填充时出错

node.js - 如何在 Mongo 中为数组的元素定义唯一索引

javascript - 在 javascript 中加载 php 文件(AJAX 或其他)

javascript - JavaScript 中的警报功能不起作用

javascript - 剪贴板 IE 8 和 7 中的 Jquery ZeroClipboard 或 Zclip 什么都没有

javascript - 为什么 Internet Explorer 在 Ajax 调用失败后不发送 HTTP post 正文?

javascript - 如何异步接收后端消息?

javascript - 在不干扰排序顺序的情况下连接/合并两个数组的最佳方法是什么?

javascript - 从迭代器/生成器获取单个 yield 值