我想进行ajax调用,在数据对象中我需要在同一个键中有几个值。
var data = {
foo: "bar",
foo: "baz"
}
$.ajax({
url: http://example.com/APIlocation,
data: data,
success: function (results) { console.log(results) },
dataType: 'json'
});
目的是获得一个类似于:
的URLhttp://example.com/APIlocation?foo=bar&foo=baz
我试着像这样构建数据:
var data = {
foo: ["bar","baz"]
}
出乎意料的是,它不起作用,因为它编码了这样的URL:
http://example.com/APILocation?foo%5B%5D=bar&foo%5B%5D=baz
我尝试了解决方案here,但无法使其正常工作。
答案 0 :(得分:15)
您可以使用jQuery' $.param
将数组转换为多次包含相同键的参数字符串。将第二个参数设置为true
,以便它不进行url编码,然后将该字符串传递给AJAX调用中的data属性:
var data = $.param({ foo: ['bar', 'baz'] }, true);
// data is now 'foo=bar&foo=baz'
$.ajax({
url: 'http://example.com/APIlocation',
data: data, // Will handle the string correctly.
success: function (results) { console.log(results) },
dataType: 'json'
});
或者,使用对象,您可以将traditional
属性设置为true
:
var data = {
foo: ["bar","baz"]
};
$.ajax({
url: 'http://example.com/APIlocation',
data: data,
success: function (results) { console.log(results) },
dataType: 'json',
traditional: true
});