猿问

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

我正在尝试使用 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);

    });

});


小怪兽爱吃肉
浏览 228回答 1
1回答

郎朗坤

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.
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答