为了账号安全,请及时绑定邮箱和手机立即绑定

服务器上的 POST 请求正文为空

服务器上的 POST 请求正文为空

小怪兽爱吃肉 2021-11-18 20:33:40
我正在尝试使用 XMLHttpRequest 从客户端 javascript 发出 AJAX 请求。以下是它的代码:document.getElementById('myform').onsubmit=function(){    var http = new XMLHttpRequest();    var text = document.getElementById('myinput').value;    console.log(text);    http.onreadystatechange = function(){        if(http.readyState === 4 && http.status === 200){            location.reload();        }    };    http.open('POST','/todo',true);    http.setRequestHeader("Content-Type", "application/json");    var obj = {        item:text    };    http.send(JSON.stringify(obj));}这工作正常,没有 anny 错误。但是,在服务器端,当我尝试将请求正文记录到控制台时,它显示为一个空对象。有人可以帮我弄这个吗?以下是处理 post 请求的服务器端代码:app.post('/todo',urlencodedParser, function(req,res){    console.log(req.body); // This logs an empty object to the console!    newItem = Todo(req.body);    newItem.save(function(err,data){        if(err) throw err;        res.json(data);    });});
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

JSON 编码和 URL 编码是不同的。


如果您希望使用 JSON 编码发送数据,那么您必须使用适当的中间件接收它:


const bodyParser = require('body-parser');


app.post('/todo', bodyParser.json(), function(req,res){

    console.log(req.body); // This logs an empty object to the console!

    newItem = Todo(req.body);

    newItem.save(function(err,data){

        if(err) throw err;

        res.json(data);

    });

});

它很可能与 jQuery 一起使用,因为 urlencoding 是$.post.


查看完整回答
反对 回复 2021-11-18
  • 1 回答
  • 0 关注
  • 227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信