通常serialize()在form元素上使用。
请注意,多个选项在同一键下序列化,例如
one
two
three
将导致一个查询字符串,其中包含多次出现相同的查询参数:
[path]?foo=1&foo=2&foo=3&someotherparams...
这可能不是您在后端中想要的。
我使用此JS代码将多个参数简化为以逗号分隔的单个键(在John Resig所在的线程中从评论者的响应中无耻地复制):
function compress(data) {
data = data.replace(/([^&=]+=)([^&]*)(.*?)&\1([^&]*)/g, "$1$2,$4$3");
return /([^&=]+=).*?&\1/.test(data) ? compress(data) : data;
}
上面的内容变成了:
[path]?foo=1,2,3&someotherparams...
在您的JS代码中,您可以这样称呼它:
var inputs = compress($("#your-form").serialize());
希望能有所帮助。