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はオブジェクトの配列を返します。それぞれにプロパティとnameが含まれていますvalue

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

それが印刷している理由です[Object, Object]

JSON.stringify(attr_str)必要に応じて、文字列化された値を出力するために使用できます。ただし、古いブラウザーではネイティブにサポートされていないため、 JOSN2JSON.stringifyなどの互換性ライブラリを含める必要がある場合があります。

デモ:フィドル.

于 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]には、そのオブジェクトのプロパティに を使用するだけattr_str[0].nameです。どちらが印刷されますかb

于 2013-02-09T02:34:26.227 に答える