如何对数组进行参数化,使其成为以逗号分隔的单个名称值对。使用jQuery $ .param为每个数组值创建一个参数,而不是只为一个。显然,没有选择或设置来改变这一点。我正在寻找的不仅仅是使用Array.join,因为我需要深度序列化和url编码。是否有jQuery.param选项或实用程序库?
使用jQuery的param方法:
$.param({ a: [2, 3, 4] }); // "a[]=2&a[]=3&a[]=4"
我需要:
var p = {a: [2, 3, 4]};
param(p) //"a=2,3,4"
答案 0 :(得分:2)
最简单的,假设对象的每个属性的值是一个数组:
function param(obj) {
var output = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
output.push(prop + '=' + obj[prop].join(','));
}
}
return output.join('&');
}
var p = {
a: [2, 3, 4],
b: ['something','else']
};
console.log(param(p)); //a=2,3,4&b=something,else
答案 1 :(得分:0)
我认为你将不得不创建这个函数定制。幸运的是,如果您的数据结构非常简单,那就不难了:
var p = {a: [2, 3, 4]};
var encoded = '';
for (var prop in p) {
if (p.hasOwnProperty(prop)){
encoded += prop + '=' + p[prop].join();
}
}