是否可以自定义jQuery如何序列化AJAX url参数?

时间:2016-06-01 04:21:20

标签: javascript jquery ajax

除了编写自己的序列化程序之外,是否可以告诉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

谢谢!

3 个答案:

答案 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"