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

时间:2018-08-22 07:26:20

标签: javascript node.js ajax

这个问题被许多用户问到,我看到了所有解决方案并尝试实现它们,但对我来说不起作用。 我试图获取由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 empty on posts

Express.js POST req.body empty

Node.js req.body empty

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

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

请帮助。

1 个答案:

答案 0 :(得分:1)

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

if(true)