javascript - Node.js 应用程序中的 JSON 正文始终为空

标签 javascript jquery ajax json node.js

我正在使用 Node.js 构建一个简单的应用程序。在客户端,我使用 Ajax 向服务器发送一些 JSON 数据,代码如下:

var data = {};
data.title = "title";
data.message = "message";
$.ajax({
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json',
    url: '/myresult',
    processData: false,
    success: function (data) {
        console.log('success');
        console.log(JSON.stringify(data));
    }
});

处理该请求的服务器端代码是:

app.post('/myresult', function (req, res) {
    var obj = {};
    console.log('body: ' + JSON.stringify(req.body));
    res.send(req.body);
});

但是控制台日志将响应 bode 打印为空,即 body: {}

为什么body值是空的,如何用标题和消息填充它?

最佳答案

Express得到body-parser的善意帮助。 使用它作为中间件来获取实际的正文内容:

app.use(require('body-parser').urlencoded({extended: true}));

然后保留您的代码:

app.post('/myresult', function(req, res) {
    var obj = {};
    console.log('body: ' + JSON.stringify(req.body));
    res.send(req.body);
});

我希望这对您有用,但请注意 bodyParser.json()同样,这可能更适合您的需求。

<小时/>

此外,当前发生的情况是,由于您有 processData: false,它基本上会发送以下内容:({"command":"on"}).toString() 这是 [object Object] 并且您的正文解析器失败。尝试完全删除 processData 标志。

关于javascript - Node.js 应用程序中的 JSON 正文始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046499/

相关文章:

javascript - Jquery InputMask 动态验证

javascript - Jquery UI 对话框无法在初始化之前调用对话框上的方法;试图调用方法 'isOpen'

javascript - 异步AJAX按顺序调用

javascript - 更改所选选项的变量值

javascript - 当与服务器的连接丢失时,保存在 html 页面字段中输入的数据

javascript - 如何在单页 javascript 应用程序中发现内存泄漏?

jquery - 创建折叠的左侧导航样式列

javascript - 当通过映射构造一个数组时,连接两个数组会产生嵌套数组

javascript - React JS + React Router 可以使用 $.get 但不能使用 $.ajax PUT

javascript - 使用 jquery 和 ajax 隐藏基于 db 的某些结果