NodeJS 使用ExpressJS响应时出现问题

6vl6ewon  于 2023-03-17  发布在  Node.js
关注(0)|答案(1)|浏览(153)

我还处于使用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格式提交数据工作正常。

6tqwzwtp

6tqwzwtp1#

有几件事需要澄清,希望你能找到你正在寻找的解决方案:
1.这个问题与您的服务器无关-它总是以相同的数据响应,不可能有任何问题。
1.在我修改这篇文章的标题之前,您提到了正文解析器:再说一遍,这和你的问题无关。
1.主体解析器是一个中间件函数,解析请求主体。它与提供响应无关。

  1. JavaScript不会抛出编译时错误。如果你想要这样,那么你需要TypeScript。
  2. Fetch API是asynchronous,因此需要一个HTTP请求的响应处理程序。
    1.使用获取API(或任何其他库)将执行HTTP请求。
  3. HTTP请求不能直接控制浏览器导航(例如重定向、呈现HTML、使用JSON/XML等)

相关问题