Javascript 如何将表内的表单转换为JSON
我正在尝试将表单数据转换为json 我有一个html表,如下所示。在表单提交中,我想做的是将其转换为jsonJavascript 如何将表内的表单转换为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
<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;
}