Javascript $.ajax将[]追加到键

Javascript $.ajax将[]追加到键,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用的是jQuery1.9.1。发送ajax数据时出现问题,其中一个键中包含数组数据。 这是我的代码: var obj = {"param1": 1, "param2": 2, "param3": [1, 2]}; $.ajax({ url : url, type: "POST", data: obj, success: function(){} }); 但当我检查开发工具的网络面板中的标题时。其显示如下: "param1": 1, "param2": 2

我使用的是jQuery1.9.1。发送ajax数据时出现问题,其中一个键中包含数组数据。 这是我的代码:

var obj = {"param1": 1, "param2": 2, "param3": [1, 2]};
$.ajax({
    url : url,
    type: "POST",
    data: obj,
    success: function(){}
});
但当我检查开发工具的网络面板中的标题时。其显示如下:

 "param1": 1,
 "param2": 2, 
 **"param3[]"**: [1]
 **"param3[]"**: [2]
为什么要将
[]
添加到param3键?有人知道吗


我以前使用过
$.ajax
,这是它第一次这样发送。

这是完全正确的,这是通过请求发送数组的方式。 它与html表单相同:

<input name="param3[]" value=1>
<input name="param3[]" value=2>

param3[]:[1],param3[]:[2]
只是param3数组的另一种表示法,在PHP后端,它将是一个单一变量
$\u POST['param3']
,以[1,2]为值。(假设您使用PHP,对于其他语言,它将是一个类似但可能不同的变量。)

jquery 1.4中添加的方括号(即[])用于处理多维数组。如果要删除此选项,应将“传统”选项设置为true,如下所示:

$.ajaxSettings({traditional: true});

下面的链接解释了细节

这就是数组作为参数发送的方式
data:JSON.stringify(obj),
这是正常的行为,尽管听起来可能需要在AJAX请求上使用
traditional:true
属性,如果您不希望它以这种方式格式化。检查文档以获取更多信息如果您是正确的,那么您假设OP使用的是PHP。这将导致C#MVC模型绑定器出现问题。@RoryMcCrossan是的,我假设是PHP,更新了答案,谢谢!