除了编写自己的序列化程序之外,是否可以告诉jQuery / AJAX调用以特定方式格式化查询字符串参数?
我有一个jQuery AJAX调用,并且传递了一个包含URL参数的对象
var params = {name: 'somename', favColors: ['red','blue']};
检查AJAX调用$.get("/Controller/Action/", params)
表明URL参数字符串为?name=somename&favColors[]=red&favColors[]=blue
目标网址要求查询参数不包含重复数组值的[],例如: ?name=somename&favColors=red&favColors=blue
谢谢!
答案 0 :(得分:0)
$.get()
也接受查询字符串作为第二个参数而不是对象。您可以使用它来附加自定义生成的查询字符串。 ?
附加了你,所以你不需要放一个。{/ p>
答案 1 :(得分:0)
jQuery使用$.param()
来编码来自对象的数据字符串。您可以自己使用它并删除[]
,其编码为%5B%5D
。
如其他答案字符串所述,可以使用数据参数的对象
类似的东西:
var reg =/%5B%5D/g;
var params= $.param({name: 'somename', favColors: ['red','blue']}).replace(reg,'');
$.get("/Controller/Action/", params)
仅在浏览器控制台中测试
答案 2 :(得分:0)
您可以使用jQuery.param()
及其第二个参数traditional
,将结果提供给$.get()
:
var params = {name: 'somename', favColors: ['red','blue']};
$.get("/Controller/Action/", $.param(params, true))
该论点被描述为:
一个布尔值,指示是否执行传统的"浅"序列化。
在这种情况下:
console.log($.param(params, true));
// "name=somename&favColors=red&favColors=blue"