Node.js Express接收邮差为空

我正在一个简单的网站上工作,当我发送一个JSON到API时遇到问题。 如果使用html / js发送JSON,则会将其作为EMPTY接收,但在使用邮递员时,一切都按预期工作。

文件的结构就是在node.js上运行的服务器,它是一个带有javascript的html页面,用于构buildJSON并发送它。

html文件代码如下所示:

<!DOCTYPE html> <html lang="en"> <head> <body> </head> Receiver Address <input type="text" placeholder="Write the target address..." id="target_address"></input><br> Message <input type="text" placeholder="Write the message in plain text..." id="message"></input><br> <input type="submit" value="Send" id="accept"></input> <br> <div id="results"><div> </body> <script src="js/jquery.js"></script> <script src="js/main.js"></script> </html> 

该JavaScript文件是:

 var URL_API = "http://localhost:3000/nr"; $("#accept").click(function(e) { e.preventDefault(); var url = URL_API; var object = new Object(); object.L = 1; object.B = ($("#target_address").val()); object.message =($("#message").val()); object.po = "ProofofOrigin"; var data = JSON.stringify(object); console.log(data); $.ajax({ url : url, type : 'POST', crossDomain : true, dataType : 'json', contentType : 'application', data : data, dataType:'json', }).done(function(data, status, jqxhr) { window.alert("Information sent successfully"); console.log(data.B); }).fail(function(data) { window.alert("ERROR"); }); }); 

然后接收给定的POST时正在执行的节点的部分:

 router.post('/', function(req, res, next) { var updateStep = Number(req.body.L)+1; var ProofofOrigin = req.body.message + "Message signed - POO"; var info_JSON = { address: req.body.B, step: updateStep, message: req.body.message, po: req.body.po, }; JSON.stringify(info_JSON); //res.send("Address : " + req.body.B + " \nStep : " + req.body.L + " \nMessage : " + req.body.C + " \nPOO : " + req.body.Po); res.send(info_JSON); //console.log(info_JSON); }); 

由于某种原因,req.body(JSON应该保存在哪里)在body上是完全空的,但是如果我使用postman发送它,它将会工作。 我不知道什么可能是错的。

请validation这一点:

在JavaScript(客户端):

 contentType : 'application/json', 

在nodejs(服务器端):

 var express = require('express'); var bodyParser = require('body-parser'); var app = express(); app.use(bodyParser.json()); app.post('/api/doSomething', function(req, res) { var mydata = req.body.mydata; ... return res.json({result: result}); }); 

您需要包含正文parsing器模块才能parsingJSON正文。