使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)
Posted
技术标签:
【中文标题】使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)【英文标题】:Send POST JSON Data and Receive With Node.js (NO BODYPARSER) 【发布时间】:2020-04-10 12:55:18 【问题描述】:我很沮丧,因为我无法从 html 发送或从 Node.js JSON 数据接收。我想我快要解决了,但我已经厌倦了几个小时的尝试。有人帮助我吗?
正如下面的代码,我的 VSCODE 中的响应为 null (req.body = null?)。
当我从 Insomnia 尝试时,没关系。当我从 HTML 表单尝试时,失败了。 * 我可以使用 BodyParser,但为什么从 Insomnia 发送作品而从 HTML Form 发送却不行?
//routes.js
routes.post('/go', (req, res) =>
console.log(req.body)
return res.json( "Response": req.body )
)
<!DOCTYPE html>
<html>
<head>
<title>API Correios</title>
</head>
<body>
<form id="FrmQuery" action="http://localhost:3333/go" method="POST" enctype="application/json">
<label for="sCepOrigem">Cep Origem</label><br>
<input type="text" name="sCepOrigem" id="sCepOrigem"><br><br><br>
<input type="text" id="jsonData"><br><br>
<button id="send" type="button">Enviar</button>
</form>
<script>
document.querySelector('#send').addEventListener('click', (event) =>
let sCepOrigem = document.querySelector('#sCepOrigem')
var obj =
"sCepOrigem": sCepOrigem.value,
;
var myJSON = JSON.stringify(obj);
document.querySelector('#jsonData').value = myJSON
document.querySelector('#FrmQuery').submit()
)
</script>
</body>
</html>
【问题讨论】:
【参考方案1】:在 Web 浏览器的 javascript 中,您需要将其作为原始 XMLHttpRequest 发送:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
其他可能性是 jQuery 的 $.ajax
或者可能是新的 fetch API。
【讨论】:
【参考方案2】:根据我使用 node js 的经验,我相信你必须简单地 res.send
并删除 return 语句。
希望这会有所帮助。
【讨论】:
我想我已经尝试过了……你能给我举个例子吗? 对于新版本的 express,我认为需要 body 解析器才能访问 req.body以上是关于使用 Node.js 发送 POST JSON 数据并接收(无 BODYPARSER)的主要内容,如果未能解决你的问题,请参考以下文章
Node.js/ Express POST 请求正文被解析为不正确的 JSON
如何使用 Node.js 将 JSON 数据从 Node.js 发送和获取到 HTML
如何在 express node.js POST 请求中接收 JSON?