Javascript 为什么我们必须字符串化数组而不是请求上的对象?

Javascript 为什么我们必须字符串化数组而不是请求上的对象?,javascript,jquery,django,post,request,Javascript,Jquery,Django,Post,Request,昨晚我通过AJAX向服务器发送了一些数据(特别是,$.post),这时我遇到了一个问题,JavaScript数组在发送之前需要“字符串化”并作为字段应用于对象。即: $.post("/myUrl/", {"myKey": json.stringify(myArray)}, ... ); 如果我不执行stringify,当文章到达Django时,它的格式就会被搞砸 当对象可以按原样发送时,为什么需要对请求的数组进行字符串化?或者,在所使用的后端上,这是否会有很大差异?对象不会按原样发送。jQue

昨晚我通过AJAX向服务器发送了一些数据(特别是,
$.post
),这时我遇到了一个问题,JavaScript数组在发送之前需要“字符串化”并作为字段应用于对象。即:

$.post("/myUrl/", {"myKey": json.stringify(myArray)}, ... );
如果我不执行stringify,当文章到达Django时,它的格式就会被搞砸


当对象可以按原样发送时,为什么需要对请求的数组进行字符串化?或者,在所使用的后端上,这是否会有很大差异?

对象不会按原样发送。jQuery将对象重新编码为URL键/值对,例如:

http://this.url?myKey=stringifiedArray.


使用对象是因为它们是开发人员易于操作的数据结构。

对象不会按“原样”发送。jQuery对它做了一些工作,将其转换为URL键/值:
http://this.url?myKey=stringifiedArray
。使用对象是因为它们是易于操作的数据结构。啊,很有趣。所以jQuery对数组的处理方式不同,或者说它对数组的处理方式不同?啊。。。。。这可以解释为什么
请求.POST
被分成
列表[索引]
位;它正试图从数组中创建唯一的键/值对!是这样吗?jQuery的post方法接受键/值对的数据对象(或字符串-见下文)。。。而
数组
对象
,而不是
普通对象
是这样吗?()不同之处在于数组是一个类似列表的对象,具有数字索引和可排序性,而对象具有键/值对,其中键必须是唯一的且不能排序。顺便说一句,如果您从未浏览过它,它是一个很好的资源。是的,我看过MDN库——谢谢。)实际上我只是浏览了一下()。看起来最大的区别在于普通对象(
{}
)与包含数组的更一般的对象类,而jQuery似乎在默认情况下只处理前面的情况。有趣!谢谢你,安迪!
data
Type: PlainObject or String
A plain object or string that is sent to the server with the request.