代码之家  ›  专栏  ›  技术社区  ›  Thierry Lam

在AJAX调用期间,如何删除JS变量名末尾的方括号?

  •  15
  • Thierry Lam  · 技术社区  · 14 年前

    我目前拥有以下javascript数组:

    var stuffs = ['a', 'b'];
    

    我使用jQuery的 load :

    var data = {
        'stuffs': stuffs
    };
    
    $(".output").load("/my-server-code/", data, function() {
    });
    

    request.POST

    'stuffs[]': [u'a', u'b']
    

    [] stuffs . 有没有办法去掉这个 在它到达服务器代码之前?

    3 回复  |  直到 14 年前
        1
  •  34
  •   rgripper    8 年前

    这是默认行为 in jQuery 1.4+ …如果你想让这个职位 &stuffs=a&stuffs=b 而不是 &stuffs[]=a&stuffs[]=b traditional option true

    $.ajaxSetup({traditional: true});
    

    注意这会影响所有请求。。。在这种情况下,这通常是你想要的。如果你想的话 每个请求 你应该用更长的 $.ajax() 呼叫并设置 traditional: true 在那里。 You can find more info about traditional in the $.param() documentation

        2
  •  -1
  •   Eric    14 年前

    当使用GET请求通过表单或AJAX提交数组时,每个元素都会被赋予数组的名称,后跟一对可选的空方括号。因此jQuery正在生成url http://example.com/get.php?stuff[]=a&stuff[]=b

    POST 请求的工作方式完全相同(除非json作为一个长json字符串发送)。

    在PHP中,这会被解析回原始数组中,因此尽管查询字符串可能有点奇怪,但数据是在发送时接收的。 $_GET['stuff'][0] 在PHP中正常工作。

        3
  •  -3
  •   Andy    14 年前

    这个 [] 指示变量是数组。我想 []