这是我的第一篇文章。 我对 JavaScript 对象还很陌生,我花了一天时间试图弄清楚,但我仍然陷入困境......我希望有人能给我一个提示。
基本上,我有 2 个或更多表单需要通过 ajax 调用序列化和发送数据。
我有这些表格:
<form class="lang_block">
<fieldset>
<legend>it</legend>
<input name="language" value="Italiano" type="text">
<input name="data" value="data_it" type="text">
<input name="temp" value="temp_it" type="text">
</fieldset>
</form>
<form class="lang_block">
<fieldset>
<legend>en</legend>
<input name="language" value="English" type="text">
<input name="data" value="data_en" type="text">
<input name="temp" value="temp_en" type="text">
</fieldset>
</form>
还有这个 JavaScript 函数:
function ConvertFormToJSON(target_form)
{
var form = $(target_form);
var arr = [];
form.each(function()
{
var obj = {};
var sr = $(this).serializeArray();
obj = $.each(sr, function()
{
sr[this.name] = this.value;
});
arr.push(obj);
});
return JSON.stringify(arr);
}
ConvertFormToJSON('.lang_block');
输出:
"[
[
{
"name": "language",
"value": "Italiano"
},
{
"name": "data",
"value": "data_it"
},
{
"name": "temp",
"value": "temp_it"
}
],
[
{
"name": "language",
"value": "English"
},
{
"name": "data",
"value": "data_en"
},
{
"name": "temp",
"value": "temp_en"
}
]
]"
我想要实现的输出:
"[
{
"language": "Italiano",
"data": "data_it",
"temp": "temp_it",
},
{
"language": "English",
"data": "data_en",
"temp": "temp_en",
}
]"
最佳答案
您正在 sr 而不是对象上设置值。尝试一下:
function ConvertFormToJSON(target_form)
{
var form = $(target_form);
var arr = [];
form.each(function()
{
var obj = {};
var sr = $(this).serializeArray();
$.each(sr, function() {
obj[this.name] = this.value;
});
arr.push(obj);
});
return JSON.stringify(arr);
}
ConvertFormToJSON('.lang_block');
关于javascript - 简化 JavaScript 对象的 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245571/