在快速服务器上使用 jquery 发布 json

Posted

技术标签:

【中文标题】在快速服务器上使用 jquery 发布 json【英文标题】:Post json using jquery on express server 【发布时间】: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是字符串数据格式 好的,那我该怎么做呢? 【参考方案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

以上是关于在快速服务器上使用 jquery 发布 json的主要内容,如果未能解决你的问题,请参考以下文章

用 JavaScript 中的 JSON 数据动态填充表格的快速方法

JQuery 的Ajax的使用

jQuery 用另一个 DOM 完全替换元素的 DOM - 更快的方法?

如何使用 JQuery 发布 JSON 数据?

如何使用 JSON 和 jQuery 在 Rails 2.3.5 中显示服务器错误

如何在 Jquery 中使用 JSON?