注意:我的问题是关于服务器和客户端之间的连接。与特定格式的使用无关。此外,提议的重复项表达不清,给出的答案使用jquery,这是对我的无HTML客户端代码的不必要添加。
我正在尝试使用XMLHttprequest将一些文本从Web应用程序发送到我的快速服务器。我的计划是对文本运行解析器,然后将输出返回给用户。我可以从服务器返回“乒乓”消息。但是看来我不明白如何在后端解析我的请求。
我的前端看起来像这样:
<script type="text/javascript">
const shuldBeAsync = true
var req = new XMLHttpRequest()
req.onload = () => {
console.log(req.status,req.responseText)
}
var data = new FormData()
data.append("massage","ping")
req.open("POST","http://localhost:3000/",shuldBeAsync)
req.send(data);
</script>
和我的后端一样:
const express = require('express')
const app = express()
app.use(express.static('./'))
app.use(express.json())
app.post('/', (req,res) => {
console.log(req.body)
res.send("pong")
})
app.listen(3000,() => console.log('listening on 3000'))
在浏览器上,它在控制台上记录了我的“ pong”,但在服务器上,我得到的只是空括号...
解决方案: 所以我的问题是我将数据作为FormData发送并希望将其作为JSON捕获。另外,我需要指定我的内容类型。因此,我将前端的最后几行更改为thees:
req.open("POST","http://localhost:3000/",shuldBeAsync)
req.setRequestHeader("Content-type","application/json");
req.send(JSON.stringify({"message":"Ping"}));
它有效:)