使用JavaScript将表单中的动态字段集转换为JSON
我有一个具有动态行数的表单。每行有3个字段,一个隐藏的id、代码和交换使用JavaScript将表单中的动态字段集转换为JSON,javascript,json,Javascript,Json,我有一个具有动态行数的表单。每行有3个字段,一个隐藏的id、代码和交换 <form id="form_in_question"> <table> <tr> <td>0</td> <td> <input type="hidden" id="id[]" value="123" />
<form id="form_in_question">
<table>
<tr>
<td>0</td>
<td>
<input type="hidden" id="id[]" value="123" />
<input type="input" id="code[]" value="abc" />
</td>
<td>
<select id="exchange[]">
<!-- Options... -->
<select>
<td>
<tr>
<!-- unlimited rows... -->
</table>
</form>
因此,我可以通过AJAX将JSON对象传递给它,如:
$("#dialogEditor").dialog('option', 'buttons', {'Save' : function() {
/* Define variables */
var data = $("#form_in_question").serializeArray();
$.ajax({
url: 'ajax.codes.php',
dataType: 'json',
data: {
action: "update_codes",
entryId: entry,
data: data
},
type: 'POST',
success: function() {
ui.showMsg("Codes Updated");
}
});
这就是我实际传递的JSON的样子:
data[0][name] id[]
data[0][value]
data[1][name] code[]
data[1][value] zxc
data[2][name] exchange[]
data[2][value] 15
data[3][name] id[]
data[3][value]
data[4][name] code[]
data[4][value] BVA
data[5][name] exchange[]
data[5][value] 5
或原始数据:
5.D D)D)D)D(5)D)和数据%5)D(D)和数据%5%5)D(D)和数据%5%5%5 5)D)D)5)D%5)D%5%5%5)D%5)D%5%5)D%5%5%5)D%5)D%5)D%5)D%5%5%5)D%5)D%5%5%5%5)D%5%5%5%5%5%5%5)D%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5%5价值%5D%5Bvalue%5D=BVA和数据%5B5%5D%5Bname%5D=ex更改%5B%5D和数据%5B5%5D%5B值%5D=5
我尝试了在SO上找到的方法,但它没有将3个字段分组在一起。以下代码应该可以工作:
var data = [];
var table = $("table").get()[0];
for (var i=0; i<table.rows.length; i++) {
var tableRow = table.rows[i];
var rowData = {};
var inputData = {};
inputData["id"] = $("input[id^='id']", $(tableRow.cells[1])).val();
inputData["code"] = $("input[id^='code']", $(tableRow.cells[1])).val();
inputData["exchange"] = $("select[id^='exchange']",$(tableRow.cells[2])).val();
rowData[$(tableRow.cells[0]).text()] = inputData;
data.push(rowData);
}
console.log(JSON.stringify(data));
var数据=[];
var table=$(“table”).get()[0];
对于(var i=0;iI仅获取第一行..我还没有机会检查为什么会发生这种情况,我只是想对我的帮助和更新工作表示感谢-。请注意,在上面的代码中,该行没有结束符
。我正在获取[{“0”:{“code”:“zxc”},{“1”:{}]
当我在我的代码中运行它时,这肯定是一个问题。我今天没有时间看它,还有一些其他问题。我现在将尝试找出问题所在。上面的html块与我的实际代码相比被极度稀释,所以我一定是意外地删掉了
。谢谢你的帮助!!!明白了,我必须继续努力n原始代码中有一些东西,但就是这样!非常感谢!
var data = [];
var table = $("table").get()[0];
for (var i=0; i<table.rows.length; i++) {
var tableRow = table.rows[i];
var rowData = {};
var inputData = {};
inputData["id"] = $("input[id^='id']", $(tableRow.cells[1])).val();
inputData["code"] = $("input[id^='code']", $(tableRow.cells[1])).val();
inputData["exchange"] = $("select[id^='exchange']",$(tableRow.cells[2])).val();
rowData[$(tableRow.cells[0]).text()] = inputData;
data.push(rowData);
}
console.log(JSON.stringify(data));