複数のチェックボックスが同じ名前を持つフォームでチェックボックスをシリアル化しようとしています。
<input name="mycheckbox" type="checkbox" value="A"/>A</br>
<input name="mycheckbox" type="checkbox" value="B"/>B</br>
以下のような serializeArray を使用すると、すべてがうまく機能します。A と B の両方がチェックされている場合、JSON.stringify は JSON を配列として正しく表します。
{"mycheckbox":["A","B"]}
ただし、A のみをチェックした場合、JSON は配列として表されなくなります。
{"mycheckbox":"A"}
処理中の RESTful バックエンドでは、一貫して配列として渡す必要があります。stringify を強制的に配列として表現する方法はありますか?
var jsonData = JSON.stringify($('form').serializeObject());
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};