浏览器在网络选项卡中显示JSON响应,而不是带有JSON的HTML

1sbrub3j  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(245)

我正在关注这个视频:https://youtu.be/5TxF9PQaq4U?t=600当他向localhost:8383/info发出GET请求时,JSON {info:“Text”}显示在network-tab内,但浏览器仍显示HTML页面。当我向localhost:8383/info发出GET请求时,浏览器显示JSON,但不显示HTML。我如何才能获得与他相同的结果?
Index.html(在“公共”文件夹内)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="">
        <input id="input" type="text">
        <button id="get">Get</button>
    </form>
</body>
<script>
    const input = document.getElementById("input")
    const getbtn = document.getElementById("get")

    getbtn.addEventListener("click", getInfo);

    async function getInfo(e) {
        e.preventDefault()
        const res = await fetch("http://localhost:8383/info", {method: "GET"})
        console.log(res)
    }
</script>
</html>

Server.js

const express = require("express")
const app = express()
const port = 8383

app.use(express.static("public"))

app.get("/info", (req, res) => {
    res.status(200).json({info: "Text"})
})

app.listen(port, ( ) => console.log("Server started"))

This is what the browser displays on localhost:8383/info
我尝试向localhost:8383发出GET请求(没有信息),但响应是HTML文件,而不是{info:“文本”}。

dgtucam1

dgtucam11#

你错过了两个地方

1需要在server.js中添加CORS

app.use(cors());

2需要在index.html中添加DOM元素并在脚本中更新它。

<p id="message">
        The message will go here
    </p>
    ...

document.getElementById('message').textContent = JSON.stringify(info);

这是完整的代码。
一个二个一个一个
结果-在VS代码和node server.js中运行GO Live扩展

相关问题