Javascript 如何将单个表单中的数据分离到JSON数组中?

Javascript 如何将单个表单中的数据分离到JSON数组中?,javascript,html,node.js,express,Javascript,Html,Node.js,Express,视图(把手) 我试图创建一个可以有多个产品(选项)及其子选项的表单,并将它们分别存储在对象的JSON数组中 虽然视图本身工作正常,但数据是作为单个JSON对象发送的,这是预期的,因为它们是以单一形式发送的 我想知道是否有一种方法可以分别分离数据并作为JSON数组发送,或者以某种形式发送,这种形式可以在不使用正则表达式的情况下进行迭代 //在我的帮助下,使用Express和把手解决了这个问题。我想删除这个问题,因为它是链接中已回答问题的副本,但我决定将它留给与我有类似问题的任何人 就像链接中的解决

视图(把手)

我试图创建一个可以有多个产品(选项)及其子选项的表单,并将它们分别存储在对象的JSON数组中

虽然视图本身工作正常,但数据是作为单个JSON对象发送的,这是预期的,因为它们是以单一形式发送的

我想知道是否有一种方法可以分别分离数据并作为JSON数组发送,或者以某种形式发送,这种形式可以在不使用正则表达式的情况下进行迭代

//在我的帮助下,使用Express和把手解决了这个问题。我想删除这个问题,因为它是链接中已回答问题的副本,但我决定将它留给与我有类似问题的任何人

就像链接中的解决方案一样,我通过在输入中添加数据项标记对表单进行分组,如下所示

 <select data-item="1" class="ui search dropdown" name="category1_1">
 <select data-item="1" class="ui search dropdown" name="category1_2">

...

<select data-item="1" class="ui search dropdown" name="design_name1">      
<select data-item="1" name="skills1" class="ui search dropdown">

...

// the second group should have 2 as a data-item value

...
...
//第二个组的数据项值应为2
和javascript

<script>
  const formsLimit = 5;
  let forms = 1;


  $(document).ready(function () {
    $('.ui.dropdown')
      .dropdown();
  });

  function addform() {
    forms += 1;
    console.log(forms);

    if (forms > formsLimit) {
      forms = formsLimit
      return alert(`${forms} only!`);
    }

// =========== duplicates and appends form's inputs with increased name ==========
const html = `
<br>
Category ${forms}
<br><br>

<div class="fields">
  <div class="field">
    <label>Category 1</label>
    <select class="ui search dropdown" name="category${forms}_1">
      <option value="A1">category1_A1</option>
      <option value="AF">category1_A2</option>
    </select>
  </div>
  <div class="field">
    <label>Category 2</label>
    <select class="ui search dropdown" name="category${forms}_2">
      <option value="1">1.category1_2.A1</option>
      <option value="2">2.category1_2.A2</option>
      <option value="3">3.category1_2.A3</option>
      <option value="4">4.category1_2.A4</option>
    </select>
  </div>
  <div class="field" id="category3">
    <label>Category 3</label>
    <select class="ui search dropdown" name="category${forms}_3">
      <option value="1">1.category1_3.A1</option>
      <option value="2">2.category1_3.A2</option>
      <option value="3">3.category1_3.A3</option>
      <option value="4">4.category1_3.A4</option>
    </select>
  </div>
</div>

<div class="field">
  <input type="text" placeholder="design_name" name="design_name${forms}">
</div>

<select name="skills${forms}" multiple="" class="ui fluid dropdown">
  <option value="1">design_name1_A1</option>
  <option value="2">design_name1_A2</option>
  <option value="3">design_name1_A3</option>
  <option value="4">design_name1_A4</option>

</select>
<br>
`;  

 // ======================== END CONST HTML =======================

    $('.order_list').append(html)
    $('.ui.dropdown').dropdown();
  }
</script>
 const dataArr = [];
    for (let i = 0; i < forms; i++) {
      let formData = $(`[data-item="${i + 1}"]`).serializeArray();    
      dataArr.push(formData);
    }
constdataarr=[];
for(设i=0;i

结果将由每个类别组分别存储在dataArr中

请举例说明数据的外观。对于JSON,你指的是对象或对象数组,对吗?现在数据以单个JSON对象的形式发送,比如{cat1,cat1.1,cat1.2,cat2,cat2.1…}。我希望它们以[{cat1.1,cat1.2,cat1.3},{cat2.1,cat2.2,cat2.3},…]的形式发送,这样我可以很容易地将每一个cats分开。在表单发送数据的方式中似乎没有添加逻辑,也不必添加逻辑。服务器可能会将结果解析为JSON。因此,您最好将服务器端的数据分组。如果您不知道如何执行此操作,请将节点应用程序的
app.get('/design/add')
端点添加到问题中。哦,对不起,我添加了
 <select data-item="1" class="ui search dropdown" name="category1_1">
 <select data-item="1" class="ui search dropdown" name="category1_2">

...

<select data-item="1" class="ui search dropdown" name="design_name1">      
<select data-item="1" name="skills1" class="ui search dropdown">

...

// the second group should have 2 as a data-item value
 const dataArr = [];
    for (let i = 0; i < forms; i++) {
      let formData = $(`[data-item="${i + 1}"]`).serializeArray();    
      dataArr.push(formData);
    }