我试图在Vanilla JS中使用Fetch API POST方法。端点位于Node-JS代码中。只要在html文本输入上运行ONKEYDOWN函数,POST方法函数就会运行。每当我们在键盘上键入时,它都会将数据发送到Node端点,然后打印出来。每次我输入数据时,都会发送数据,但只有6次才停止打印req.body。
这是我的HTML + Vanilla (index.html)代码。
<div onkeydown="post()">
First Name
<input type="text" name="FirstName" id="FirstName">
<br> <br>
Middle Name
<input type="text" name="MiddleName" id="MiddleName">
<br> <br>
Last Name
<input type="text" name="LastName" id="LastName">
</div>
<script>
function post() {
const formData = {
FirstName: document.getElementById('FirstName').value,
MiddleName: document.getElementById('MiddleName').value,
LastName: document.getElementById('LastName').value,
}
localStorage.setItem("FirstName", formData.FirstName)
localStorage.setItem("MiddleName", formData.MiddleName)
localStorage.setItem("LastName", formData.LastName)
console.log(formData);
fetch('/', {
method: 'post',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(formData)
})
}
</script>这是我的Node-js代码(index.js)
const express = require('express')
const app = express()
app.use(express.json({ limit: '20mb'}))
app.use(express.static('/')) //static folder
app.listen(80, () => {
console.log('THE PORT IS UP AND RUNNING')
})
app.get('/', (req, res) => {
res.sendFile('index.html', { root: __dirname })
})
let i = 0; // to display the number of outputs
app.post('/', (req, res) => {
console.log(req.body, i++)
// print the data
})根据这段代码,我只接收了6次req.body,然后打印在终端上(6次)。请帮帮忙
发布于 2021-03-30 11:42:04
您需要对以前的请求发送响应。实现它的最简单方法是调用res对象的res方法。
// print the data
res.end();您的请求没有击中服务器,因为浏览器的并发请求限制为6,对于一些浏览器,包括Google。浏览器在发送下一个请求之前等待挂起的请求完成,但您的服务器从不发送响应。
https://stackoverflow.com/questions/66870275
复制相似问题