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

我试图发送具有多个值的相同参数名称,但即使在阅读SO上的post后也无法弄清楚如何做…我想要一个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'] }; 

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

 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 

如你所见,它继续向destination_input添加%5B%5D ,例如&destination_input%5B%5D=11+e+hubbard%2C+chicago%2C+il

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

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

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

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

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

%5B%5D分别是[]的URL编码值。 它们必须是您输入的一部分。

在你的PHP执行urldecode(inputString)来解码值。

您当前正在使用HTTP GET AJAX请求来发送数据。 实际上,HTTP POST看起来更适合您的需求。

您不仅要将一个对象投入到您的服务中,而且如果您将数据嵌入查询字符串中,那么您很快就会发现自己的字符用完了 。