Javascript 如何将表内的表单转换为JSON

Javascript 如何将表内的表单转换为JSON,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试将表单数据转换为json 我有一个html表,如下所示。在表单提交中,我想做的是将其转换为json <form class="sales-order-form"> <table class="table"> <tbody> <tr> <th>Item Name</th> <th>Unit Price</th&g

我正在尝试将表单数据转换为json 我有一个html表,如下所示。在表单提交中,我想做的是将其转换为json

<form class="sales-order-form">
    <table class="table">
        <tbody>
        <tr>
            <th>Item Name</th>
            <th>Unit Price</th>
            <th>Quantity</th>
            <th>Free Quantity</th>
            <th>Sub Total</th>
        </tr>
        <tr>
            <td><select class="form-control" name="itemName" style="width: 250px;">
                <option></option>
                <option>Option1</option>
                <option>Option2</option>
                <option>Option3</option>
            </select></td>
            <td><input class="form-control" name="unitPrice" type="text" readonly="readonly" value="50">
            </td>
        </tr>
        <tr>
            <td><select class="form-control" name="itemName" style="width: 250px;">
                <option></option>
                <option>Option1</option>
                <option>Option2</option>
                <option>Option3</option>
            </select></td>
            <td><input class="form-control" name="unitPrice" type="text" readonly="readonly" value="50">
            </td>
        </tr>
        </tbody>
    </table>
</form>
怎么做

我试着跟着

function getFormData($salesOrderForm){
        var unindexed_array = $salesOrderForm.serializeArray();
        var indexed_array = {};

        $.map(unindexed_array, function(n, i){
            indexed_array[n['name']] = n['value'];
        });

        return indexed_array;
    }
但它只返回一个json

{
  "itemName": "item1",
  "unitPrice": "50"
}

您可以使用
document.getElementsByName(“单价”)
document.getElementsByName(“itemName”)

试试这个:

函数getFormData(){ 设res=[]; 设x=document.getElementsByName(“单价”); 设y=document.getElementsByName(“itemName”); for(设i=0;i

项目名称
单价
量
自由量
小计
选择1
选择2
选择3
选择1
选择2
选择3
getFormData
您可以尝试使用jQuery的和

$('form')。提交(函数(){
var json=$('.table tr:gt(0)').map(函数(){
返回{
itemName:$(this).find('select option:selected').text(),
单价:$(此).find('[name=unitPrice]').val()
}
}).get();
log(json);
return false;//添加为留在页面上进行测试
});

项目名称
单价
量
自由量
小计
选择1
选择2
选择3
选择1
选择2
选择3
我相信:


我认为这没用。你能在这里给出你的答案吗。我没有使用任何节点js。我正在使用纯html javascript和jqueryKindly发布您的一些工作/代码,然后只有我们可以帮助您。问题更新
{
  "itemName": "item1",
  "unitPrice": "50"
}
function getFormData($salesOrderForm) {
  const serializedArray = $salesOrderForm.serializeArray();

  var result = serializedArray.reduce((accumulator, value, index) => {
    const isNewObj = index % 2 === 0;
    const obj = isNewObj ? {} : accumulator[accumulator.length - 1];

    if (isNewObj) {
      accumulator.push(obj);
    }

    obj[value.name] = value.value;

    return accumulator;
  }, []);

  console.log(result);

  return result;    
}