我还处于使用NodeJS/Express编写登录表单的早期阶段,服务器正在获取正确的信息,但是响应没有到达客户端。
ExpressJS服务器:
const express = require('express');
const bodyParser = require('body-parser')
const app = express();
const port = 3030;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}))
app.use(express.static(__dirname))
app.post('/login',(req,res) => {
console.log(req.body)
res.send({ status: 'SUCCESS' })
})
app.get('/', (req,res) => {
res.sendFile(__dirname + '/index.html')
})
app.listen(port, () => {
console.log("Port: " + port)
})
在客户端:
formLogin.onsubmit = async () => {
validateLogin() // My validate login func
validatePassword() // My validate pass func
if (loginCorrect && hasloCorrect) {
const formData = new FormData(formLogin)
for (let [keyValue, value] of formData) {
const encrypt = new safeData(value)
await encrypt.setAsyncData()
formData.set(keyValue,encrypt.encryptedData)
} // also my methods,classes
// fetch to server
const reqheader = new Headers();
reqheader.append("Content-Type", "text/html");
const reqBody = new URLSearchParams(formData)
const url = "http://127.0.0.1:3030/login";
fetch(url, {
method : "POST",
body: reqBody,
})
} else {
}
return false
}
我试过设置头来获取函数。在服务器上,我试过使用res.redirect()
到/login
而不是使用res.send()
。当我试着从FetchAPI发送数据时。使用HTML格式提交数据工作正常。
1条答案
按热度按时间6tqwzwtp1#
有几件事需要澄清,希望你能找到你正在寻找的解决方案:
1.这个问题与您的服务器无关-它总是以相同的数据响应,不可能有任何问题。
1.在我修改这篇文章的标题之前,您提到了正文解析器:再说一遍,这和你的问题无关。
1.主体解析器是一个中间件函数,仅解析请求主体。它与提供响应无关。
1.使用获取API(或任何其他库)将仅执行HTTP请求。