【问题标题】:Post json using jquery on express server在快速服务器上使用 jquery 发布 json
【发布时间】:2017-12-18 15:19:32
【问题描述】:

我想发布一个 json 对象来表达服务器。

Javascript

var task = {
    task: "Do something",
    deadline: "5 am"
};

$.post("http://localhost:3000/api/tasks", task, (data) => {
    console.log(data);
}, "json")

Node.js/Express

var bp = require('body-parser')

app.use(bp.json());

app.post('/api/tasks', (req, res) => {
    console.log(req.body);
    res.json(req.body);
})

当我使用 Postman 测试服务器时,我得到了预期的输出,即它在控制台中显示 task 对象并将其发送回客户端。

但是当我运行上面的 javascript 代码时,它会在控制台中显示一个空对象并返回空对象。我在 jquery ajax 调用中缺少什么?

【问题讨论】:

  • 您没有发送 json。 $.ajax 默认是application/x-www-form-urlencoded
  • 不是task json 对象吗?
  • 没有 json 对象之类的东西。 json是字符串数据格式
  • 好的,那我该怎么做呢?

标签: jquery json node.js ajax express


【解决方案1】:

尝试在您的请求中添加 application/json 标头。

$.ajax({ url: 'URL', 
type: 'POST',
contentType: 'application/json', 
data: JSON.stringify(DATA),
success: function(res) {
console.log(res)
}
} )

【讨论】:

  • 谢谢!那行得通。有没有办法使用$.post()而不是$.ajax()来实现同样的效果?
  • $.post 只是一个简写形式,所有 $.ajax 都可以使用。
  • 您能否将代码 sn-p 使用$.post() 添加到您的答案中?我不确定在$.post() 中设置contentType 的正确语法是什么
  • 无法使用$.post添加标题,必须使用$.ajax。如果您要发送 json 响应,也可以使用 JSON.parse 解析结果,请参阅 here
猜你喜欢
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2012-04-18
相关资源
最近更新 更多