0

在遵循这样的答案之后,我正在尝试使用以下方法将数据附加到字符串中:

<input type='checkbox' name='a' />A
<input type='checkbox' name='b' checked='checked'/>B
<input type='checkbox' name='c' />C

var attr_str = $('input').serializeArray();
attr_str.push({q:'hello',p:'world'});

但它返回[object Object],[object Object]。我错过了什么?

JSFIDDLE

4

2 回答 2

0

serializeArray返回一个对象数组,每个对象都包含属性namevalue

前任

[{"name": "x", "value": "y"}, {"name": "a", "value": "b"}, ...]

这就是它打印的原因[Object, Object]

如果需要,您可以使用JSON.stringify(attr_str)打印字符串化的值。但JSON.stringify在旧浏览器中不原生支持,因此您可能必须包含像JOSN2这样的兼容性库

演示:小提琴

于 2013-02-09T02:34:15.070 回答
0

我不确定您要完成什么,但只有经过检查的输入才会包含在serializeArray(). 你可以在这里阅读更多关于它的信息。

但是您的数组正按应有的方式作为对象返回。要查看此对象的 JSON 布局,您可以尝试JSON.stringify(attr_str).

var attr_str = $('input').serializeArray();

attr_str.push({q:'hello',p:'world'});

$('body').append('<br><br>string='+JSON.stringify(attr_str));

这将表明您正在将一个对象附加到您的attr_str数组中,但仅包含输入“b”,因为它是唯一被检查的对象。string=[{"name":"b","value":"on"}{"q":"hello","p":"world"}] 要访问此对象,您只需将attr_str[0]then 用于该对象的属性 use attr_str[0].name。哪个会打印b.

于 2013-02-09T02:34:26.227 回答