javascript - Jquery 在 ajax Post 期间更改数据...为什么?

标签 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 但不起作用。

为什么我的“附件” 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/

相关文章:

ajax - 从 PHP 文件加载 HTML 时,jQuery.load 或 jQuery.ajax() 哪个更快?

javascript - jQuery.ajax({type:'POST'in grails

php - 如何使用 javascript/jquery 获取 url?

contenteditable 中的 JavaScript 缩进文本

javascript - 如何在父路由中重新加载子路由的模型?

javascript - 用户离开密码字段后验证密码长度

javascript - ajax 表单请求仍然重新加载页面

javascript - 重用 ES6 获取对象

javascript - Jquery 检查类名是否包含字符,例如 "Y"或 "N"

jquery - 使用jquery解析xml