Javascript $.ajax将[]追加到键
我使用的是jQuery1.9.1。发送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
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,更新了答案,谢谢!