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

Javascript 在AJAX调用期间,如何删除JS变量名末尾的方括号?,javascript,jquery,ajax,django,Javascript,Jquery,Ajax,Django,我目前拥有以下javascript数组: var stuffs = ['a', 'b']; 我使用jQuery的load将上述内容传递给服务器代码: var data = { 'stuffs': stuffs }; $(".output").load("/my-server-code/", data, function() { }); 在服务器端,如果我打印request.POST(我目前正在使用Django)的内容,我会得到: 请注意变量名stuff前缀处的[]。有没有办法在到达

我目前拥有以下javascript数组:

var stuffs = ['a', 'b'];
我使用jQuery的
load
将上述内容传递给服务器代码:

var data = {
    'stuffs': stuffs
};

$(".output").load("/my-server-code/", data, function() {
});
在服务器端,如果我打印
request.POST
(我目前正在使用Django)的内容,我会得到:


请注意变量名
stuff
前缀处的
[]
。有没有办法在到达服务器代码之前删除该变量?

该变量表示该变量是一个数组。我认为在变量名后面附加
[]
是Python/Django告诉您这是一个数组的方式。您可以实现自己的打印功能,但不显示它们

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

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

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

我不确定Django是如何解析查询字符串的。

这是默认行为……如果您希望帖子是
&stuffs=a&stuffs=b
而不是
&stuffs[]=a&stuffs[]=b
,您应该将设置为
true
,如下所示:

$.ajaxSetup({traditional: true});

请注意,这会影响所有请求。。。在这种情况下,这通常是你想要的。如果希望按请求执行,则应使用较长的调用,并在此处设置
traditional:true

这是否意味着[]的附加来自Django而不是javascript?“这是提交数组的唯一方法,javascript遵循标准。”-这不是标准,而是Rails/PHP约定。数组可以完全合法地作为foo=1&foo=2发送。在1.10$中。ajaxSettings不可调用-$。应改用ajaxSetup-其用法与上面相同。
$.ajaxSetup({traditional: true});