以索引数组作为键字符串的 jQuery ajax 请求
Posted
技术标签:
【中文标题】以索引数组作为键字符串的 jQuery ajax 请求【英文标题】:jQuery ajax request with indexed array as key string 【发布时间】:2015-04-27 23:35:54 【问题描述】:我提交了一个带有以下数据的 ajax 请求:
$.ajax(
type: 'POST',
url: BASE_URL + '/api/get/filter/',
cache: false,
data:
'search':
'foo[bar]': 'foo'
,
'foo[bar]': 'foo'
)
到目前为止一切顺利,数据已发送到服务器,但是当我返回 $_POST var 时,我得到以下结果:
$_POST:
foo:
bar: "foo"
search:
foo[bar: "foo"
“search: foo[bar”有问题,不应该也是数组吗?
想法是禁用GET Form的提交,通过pushState通过Form参数更改URL而不重新加载网页,最后通过Ajax提交数据。这工作得很好,但是一旦我将这个数据发送到另一个数组键中,比如给定示例中的“搜索”,它就不起作用了。
更简单的问题: - 我有以下 URL(带有未知的获取参数):http://www.test.com/?foo[]=bar&foo[]=test&foo[bar][]=foo 如何使用 jQuery 获取所有 GET 参数并使用 Ajax 发送?
【问题讨论】:
【参考方案1】:一个 json 数组如下所示:
[
'foo':
'bar': 'foo'
]
这将使$foo['bar'] = foo
【讨论】:
【参考方案2】:写'foo[bar]'
是不正确的javascript。
无论如何,数组是一个对象,其索引是从 0 到数组长度的整数。 arr[52]
是一个数组,obj['string']
是一个对象。
您应该使用正确的语法而不是依赖 jQuery(或服务器侦听器)来尝试理解您的代码:
$.ajax(
type: 'POST',
url: BASE_URL + '/api/get/filter/',
cache: false,
data:
'search':
'foo':
'bar': 'foo'
,
'foo':
'bar': 'foo'
)
【讨论】:
【参考方案3】:我找到了一个名为 $.deparam 的插件,它应该可以完成这项工作:https://github.com/chris-s-rogers/jquery-deparam
【讨论】:
以上是关于以索引数组作为键字符串的 jQuery ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章