javascript - 仅 6 次将 API POST 获取到 Node-js
问题描述
我试图在 Vanilla JS 中使用 Fetch API POST 方法。端点位于 Node-JS 代码中。只要 ONKEYDOWN 函数在 html 文本输入上运行,POST 方法函数就会运行。每当我们在键盘上键入时,它都会将数据发送到 Node-JS 端点,然后打印出来。每次我输入时,数据都在发送,但在停止打印req.body之前只收到了 6 次。
这是我的 HTML + Vanilla JS (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
})
根据此代码,我仅收到req.body 6 次,它打印在终端中(6 次)。请帮忙
解决方案
您需要发送对先前请求的响应。实现它的最简单方法是调用对象.end()
的方法res
// print the data
res.end();
由于浏览器的并发请求数限制(包括 Google Chrome 在内的某些浏览器为 6),您的请求不会到达服务器。浏览器在发送下一个请求之前等待待处理的请求完成,但您的服务器从不发送响应。
推荐阅读
- html - 如何将我的两个按钮定位到中心?
- python-2.x - Web2py 数以千计的数字格式
- python - 如何将具有多种语言的数据框列翻译成英语而不得到:HTTP 错误 429:请求过多
- bash - Bash:无法从管道读取
- javascript - ReactJS 中名称的下拉列表
- c++ - 使用布尔值验证整数输入
- reactjs - 在 JHipster 中使用货币字段
- rust - 在实现返回可变引用的迭代器时,如何解决“无法为 autoref 推断适当的生命周期”?
- python - 如何让我的按钮增加我的迭代值并在网站上显示效果?(django)
- javascript - 如何在 mat-select 的两行中显示数据?