作为数组发送Ajax数据不同于发送为手动字符串
问题描述:
我想发送一个数组作为json的ajax请求,但由于某种原因,如果我建立一个数据的数组我想发送并传递到数据属性,这是不同的,如果我手动输入我想要的。这里有一个例子:作为数组发送Ajax数据不同于发送为手动字符串
作品:
$.ajax({
method: "PUT",
url: restURL,
data: {
id: 1,
number: 99
}
});
什么在Chrome开发者控制台中的表单数据看起来像网络请求:
id:1
number:99
不起作用:
var array = [];
array.push({
id: 1,
number: 99
});
$.ajax({
method: "PUT",
url: restURL,
dataType: "json",
data: JSON.stringify(array)
})
是什么在Chrome浏览器开发控制台中的表单数据看起来像网络请求:
[{"id":1,"number":99}]:
我需要的数据在开发者控制台匹配的内容第一个输出,因为这是我们的服务器预计,但我无法弄清楚如何让这个与预先构建数组一起工作。任何帮助将不胜感激。
答
在第一个示例中,您正在发送窗体编码键/值对。
在第二个你发送的是一个字符串......恰巧是json ......但它只是一个没有密钥的值。
尝试:
data: {myArray: array}
然后使用该密钥myArray
答
正如@charlietfl说,你的问题是,你是数据设置到阵列其中jquery documentation 说,在服务器接收数据参数必须是对象
一个解决办法可能是让你的阵列作为数据对象的属性, 例如:
var arr = [];
arr.push({
id: 1,
number: 99
});
var myObj = { data: arr};
$.ajax({
method: "PUT",
url: restURL,
data: myObj
});
希望这有助于
在第一个例子,你不发送任何阵列。它只是一个对象。数据阵列服务器上预期的格式是什么? –
@OrestHera第一个例子中的格式 – David