我有一个看起来像这样的对象:
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
但不起作用。
为什么我的“附件” Node (对象数组)在我的服务器上被转换为这些字符串名称? Jquery 是这样做的吗?我该如何阻止这种行为?
由于“附件”可以是随机长度的数组,因此我希望能够在服务器端循环。
预先感谢您的帮助!
最佳答案
来自jQuery.ajax :
data
Type: PlainObject or String or Array
Data to be sent to the server. It is converted to a query string, if not already a string.
因此,为了按原样发送 JSON 对象,您需要创建一个包含 json 的字符串:
$.ajax({
type: "POST",
url: "http://myHostHere.com",
contentType: 'application/json',
data: JSON.stringify(data),
success: function(data){
console.log("Success...");
}
});
关于javascript - Jquery 在 ajax Post 期间更改数据...为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35782119/