jQuery ajax请求,将索引数组作为关键字字符串



我提交了一个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

相关内容

  • 没有找到相关文章

最新更新