我有一个包含多个表单字段的设置..
<input type='text' id='Trait1' >0</input>
<input type='text' id='Trait2' >1</input>
<input type='text' id='Trait3' >2</input>
<input type='text' id='Trait4' >3</input>
(仅使用数据)
当我使用
时$.JSON.Stringify(form.serializeArray());
我得到像......
[{'name','Trait1','value','0'}]
等
这不能很好地转换,因为所有试图从json反序列化的东西都将'name'和'value'视为实际对象(其中'trait1'和'0'是实际对象)。
我能做些什么吗?
答案 0 :(得分:3)
看一下这篇博文:
http://www.foreachbit.com/2010_09_01_archive.html
或者简而言之,您可以使用类似的东西来删除名称和值:
var formVals = $('#MyForm').serializeArray();
var jsonObj = {};
for (i in formVals)
jsonObj[formVals[i].name] = formVals[i].value;
var submitVals = $.toJSON({ "MyFormData": jsonObj });
$ .toJSON是Stringify方法。
哦,哈曼是绝对正确的。在输入中使用value属性。
答案 1 :(得分:1)
<input type='text' id='Trait1' >0</input>
是错误使用input元素。试试<input type='text' id='Trait1' value='0'/>
答案 2 :(得分:0)
你可以自己翻译一下:
$.JSON.Stringify($.each(form.serializeArray(), function(inp) {
var rv = {}; rv[inp.name] = inp.value; return rv;
}));
答案 3 :(得分:0)
您可以轻松地将表单数据转换为JSON字符串,如下所示:
allFormTags = $(document.yourFormName).serializeArray();
var myjson = {};
$.each(allFormTags, function() {
myjson[this.name] = this.value;
})