我提交了一个包含以下数据的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"
"搜索:foo [bar",不应该这也是一个数组吗?
这个想法是禁用GET表单的提交,通过pushState通过Form参数更改URL而不重新加载网页,最后通过Ajax提交数据。这种方法很有效,但是只要我将这些数据发送到另一个数组键中,它就不会起作用,例如" search"在给定的例子中。
更简单的问题: - 我有以下网址(包含未知的获取参数):http://www.test.com/?foo[]=bar&foo[]=test&foo[bar][]=foo 如何使用jQuery获取所有GET参数并使用Ajax发送它们?
答案 0 :(得分:1)
写'foo[bar]'
是不正确的javascript。
无论如何,数组是一个对象,索引是从0到数组长度的整数。 arr[52]
是一个arrray,obj['string']
是一个对象。
您应该使用正确的语法,而不是依赖于jQuery(或服务器侦听器)尝试理解您的代码:
$.ajax({
type: 'POST',
url: BASE_URL + '/api/get/filter/',
cache: false,
data: {
'search': {
'foo': {
'bar': 'foo'
}
},
'foo': {
'bar': 'foo'
}
}
})
答案 1 :(得分:0)
我找到了一个名为$ .deparam的插件,这应该可以完成这项工作:https://github.com/chrissrogers/jquery-deparam
答案 2 :(得分:-1)
json数组看起来像这样:
[
{ 'foo': {
'bar': 'foo'
}
}
]
这将使$foo['bar'] = foo