我正在尝试在多个复选框具有相同名称的表单上序列化复选框。
<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;
};