我正在开发一个简单的网站,但在向 API 发送 JSON 时遇到问题。如果使用 html/js 发送,JSON 将被接收为 EMPTY,但使用 postman 时,一切都会按预期工作。
文件的结构就是运行在 Node.js 上的服务器,这是一个 html 页面,带有 javascript 来构建 JSON 并发送它。
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 时正在执行的 Node 部分:
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 的地方)在主体上完全是空的,但如果我使用 Postman 发送它,它就会工作。 我不知道出了什么问题。
最佳答案
请验证这一点:
在 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});
});
您需要包含正文解析器模块才能解析 JSON 正文。
关于javascript - Node.js Express 接收 postman 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33646566/