来自多个表单字段的json2,在jQuery中获取错误的值

时间:2010-10-19 19:57:32

标签: jquery json

我有一个包含多个表单字段的设置..

<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'是实际对象)。

我能做些什么吗?

4 个答案:

答案 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;
})