【问题标题】:jQuery ajax request with indexed array as key string以索引数组作为键字符串的 jQuery ajax 请求
【发布时间】: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 发送?

【问题讨论】:

    标签: javascript jquery 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/chrissrogers/jquery-deparam

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-29
          • 2015-06-08
          • 1970-01-01
          • 1970-01-01
          • 2011-07-16
          • 2013-02-12
          相关资源
          最近更新 更多