我提交了一个ajax请求,其中包含以下数据:
$.ajax({
type: 'POST',
url: BASE_URL + '/api/get/filter/',
cache: false,
data: {
'search': {
'foo[bar]': 'foo'
},
'foo[bar]': 'foo'
}
})
到目前为止,数据被发送到服务器,但当我返回$_POST变量时,我得到以下结果:
$_POST:
foo:
bar: "foo"
search:
foo[bar: "foo"
"search:foo[bar"有问题,这不应该也是一个数组吗?
其想法是禁用GET表单的提交,通过pushState通过Form参数更改URL,而无需重新加载网页,最后通过Ajax提交数据。这非常有效,但当我在另一个数组键(如给定示例中的"search")中发送此数据时,它就不起作用了。
更简单的问题:-我有以下URL(具有未知的get参数):http://www.test.com/?foo[]=条形图;foo[]=测试&foo[bar][]=foo如何使用jQuery获取所有get参数并使用Ajax发送这些参数?
编写'foo[bar]'
是不正确的javascript。
无论如何,数组是一个索引为从0到数组长度的整数的对象。arr[52]
是arrray,obj['string']
是object。
您应该使用正确的语法,而不是依赖jQuery(或服务器侦听器)来理解您的代码:
$.ajax({
type: 'POST',
url: BASE_URL + '/api/get/filter/',
cache: false,
data: {
'search': {
'foo': {
'bar': 'foo'
}
},
'foo': {
'bar': 'foo'
}
}
})
我发现了一个名为$.detram的插件,这应该可以完成任务:https://github.com/chrissrogers/jquery-deparam
json数组如下所示:
[
{ 'foo': {
'bar': 'foo'
}
}
]
这将使$foo['bar'] = foo