繁体   English   中英

处理Ajax发布请求时,节点js- req.body为空或未定义

[英]Node js- req.body empty or undefined when handling ajax post request

许多用户提出的这个问题,我看到了所有解决方案,并尝试实施它们,但对我来说不起作用。 我试图获取由ajax发送的node js函数中的数据。 我在app.js中的代码

var express    = require('express')
var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json())

var app = express()

app.post('/'uploadFileProduction',jsonParser,function(req,res){
     console.log("Hooorrey!!!!")
     console.log(req.body)

})

我的Ajax代码部分是

<script>
    $(function() {
        $('#submit_modal').click(function(e) {
           console.log('desired event fire!!!!!!!')
         e.preventDefault();
        var data = {};
                data.title = "title";
                data.message = "message";

           $.ajax({
               type: "POST",
               url: 'uploadFileProduction',
               data: JSON.stringify(data),

         });
     });
    });
</script>

当我点击此ajax函数时,我的体内为空。 我尝试了以下解决方案,但没有运气

req.body帖子为空

Express.js POST请求主体为空

Node.js请求主体为空

https://github.com/expressjs/body-parser/issues/101

当我在节点js中打印req时,它正在打印所有数据,但是在正文中它仅是{}。

请帮忙。

我认为问题是因为您将正文作为JSON对象发送,但未指定contentType。 如果不知道正确的内容类型,服务器将不知道如何解析您的身体。 您应该添加它以使工作正常:

$.ajax({
   type: "POST",
   url: 'uploadFileProduction',
   data: JSON.stringify(data),
   contentType: "application/json; charset=utf-8" // <- this is what you should add
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM