Jquery在ajax Post期间改变数据......为什么?

时间:2016-03-03 20:14:36

标签: javascript jquery ajax node.js

我有一个看起来像这样的对象:

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这样做吗?如何阻止此行为?

由于“附件”可能是一个随机长度的数组,因此可以在服务器端循环。

提前感谢您的帮助!

1 个答案:

答案 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...");
    }
});
相关问题