我有一个看起来像这样的对象:
var data = {
"to" : "someone@abc.com",
"attachment" : [{"file": "somefile.jpg"}, {"file": "someOtherFile.jpg"}]
}
然后我用这样的$ .ajax发布它:
$.ajax({
type: "POST",
url: "http://myHostHere.com",
data: data,
success: function(data){
console.log("Success...");
}
});
在我的服务器(带有Express4的Node.js)上,收到的对象看起来像这样:
{
"to" : "some@abc.com",
"attachment[0][file]" : "somefile.jpg",
"attachment[1][file]" : "someOtherFile.jpg"
}
我已尝试在$ .ajax调用上设置processData: false
,但这不起作用。
为什么我的“附件”节点(一个对象数组)在我的服务器上被转换为这些字符串名称? Jquery这样做吗?如何阻止此行为?
由于“附件”可能是一个随机长度的数组,因此可以在服务器端循环。
提前感谢您的帮助!
答案 0 :(得分:1)
来自jQuery.ajax:
数据
键入:PlainObject或String或Array
要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。
因此,为了按原样发送JSON对象,您需要创建一个包含json的String:
$.ajax({
type: "POST",
url: "http://myHostHere.com",
contentType: 'application/json',
data: JSON.stringify(data),
success: function(data){
console.log("Success...");
}
});