jquery ajax数据对象具有相同键的多个值

时间:2015-05-02 22:22:19

标签: javascript jquery ajax

我想进行ajax调用,在数据对象中我需要在同一个键中有几个值。

var data = {
    foo: "bar",
    foo: "baz"
}

$.ajax({
    url: http://example.com/APIlocation,
    data: data,
    success: function (results) { console.log(results) },
    dataType: 'json'
});

目的是获得一个类似于:

的URL
http://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,但无法使其正常工作。

1 个答案:

答案 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
});