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

Thi*_*Lam 16 javascript django ajax jquery

我目前有以下javascript数组:

var stuffs = ['a', 'b'];
Run Code Online (Sandbox Code Playgroud)

我使用jQuery将上面的内容传递给服务器代码load:

var data = {
    'stuffs': stuffs
};

$(".output").load("/my-server-code/", data, function() {
});
Run Code Online (Sandbox Code Playgroud)

在服务器端,如果我打印request.POST(我目前正在使用Django)的内容,我得到:

'stuffs[]': [u'a', u'b']
Run Code Online (Sandbox Code Playgroud)

请注意[]变量名称的前缀stuffs.有没有办法[]在它到达服务器代码之前删除它?

Nic*_*ver 33

这是jQuery 1.4+中的默认行为...如果你想要帖子&stuffs=a&stuffs=b而不是&stuffs[]=a&stuffs[]=b你应该将traditional选项设置 为true,如下所示:

$.ajaxSetup({traditional: true});
Run Code Online (Sandbox Code Playgroud)

请注意,这会影响所有请求...在这种情况下通常是您想要的.如果您希望它是按请求,您应该使用较长的$.ajax()呼叫并在traditional: true那里设置. 您可以traditional$.param()文档中找到更多信息.

  • 在1.10 $ .ajaxSettings不可调用 - 应该使用$ .ajaxSetup - 它的用法与上面相同. (4认同)