如何在不转义括号的情况下使用jQuery和.ajax方法发送数组?

Kam*_*i81 4 jquery

我试图发送具有多个值的相同参数名称,但即使在阅读SO上的帖子后也无法弄清楚如何做...我想要一个数组destination_input:

var myObject = {
                  search_zip: params.search_zip,
                  search_distance: params.search_distance,
                  filter_opts: params.filter_opts,
                  page: params.page,
                  destination_input: ['323 w concord pl #8, chicago, il', '11 e hubbard, chicago, il']
            };
Run Code Online (Sandbox Code Playgroud)

但是这会创建一个查询字符串:

search_zip=60614&search_distance=1&filter_opts=discount_check%2Cneed_device_check%2Cauto_track_check&destination_input%5B%5D=323+w+concord+pl+%238%2C+chicago%2C+il&destination_input%5B%5D=11+e+hubbard%2C+chicago%2C+il
Run Code Online (Sandbox Code Playgroud)

正如你可以看到它不断加入%5B%5Ddestination_input&destination_input%5B%5D=11+e+hubbard%2C+chicago%2C+il

这意味着一切都在后端搞砸了.有任何想法吗?

log*_*yth 10

我假设您的后端不是PHP,因为PHP期望[]表示GET参数是多值的.这意味着你的后端将使用与数组元素相同的键处理多个GET参数,对吗?

除了这个假设,你只需要告诉jQuery在将数组转换为GET参数字符串时不会自动添加[].

为此,您必须将'traditional': true参数作为jQuery的ajax函数的选项传递.

在这里搜索'传统':http://api.jquery.com/jQuery.ajax/

  • 我只是想知道为什么 false 是这里的默认值。你知道为什么吗? (2认同)