Javascript 在AJAX调用期间,如何删除JS变量名末尾的方括号?
我目前拥有以下javascript数组: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前缀处的[]。有没有办法在到达
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正在生成urlhttp://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});