我试图用 fetch 更新我的 ejs 页面,但它不起作用

i tried to upate my ejs page with fetch but it doesn't work

我试图构建一个简单的应用程序,但我遇到了问题 我的应用程序只是保存在数据库中的一些人的数据,目标只是将它们显示在屏幕上,但我们可以按姓名搜索这些人。 我有一个 ejs 页面和 javascript 文件连接到他

js代码:

document.querySelector(".search__box_input").addEventListener("click", async function(event) {
    fetch("/", {
        method: "get",
        headers: new Headers({'search': searchButton.value})
    })
})

节点代码:

app.get("/", async(req, res) => {
    if(!req.headers["search"] || req.headers["search"] === ''.trim()) {
        return res.render("home", persons: await personSchema.find({}).limit(10)}) // personSchema is my mongoose schema
    } else {
        const foundDocuments = await personSchema.find({"name.first": req.headers["search"]})
        console.log(foundDocuments); // i got my document correctly
        if(!foundDocuments) return res.send("could'nt find the user")
        return res.render("home", {
            persons: foundDocuments // It doesn't render again
        })
    }
})

我想再次渲染ejs.. 有人可以帮助我吗?

Ajax 的要点是您使用 JavaScript 发出请求,响应返回给您的 JavaScript 进行处理。通常,这将涉及执行 DOM update.

您的 JavaScript 完全忽略了响应。

const response = await fetch(...);
const text = await response.text();
console.log(text); 

如果要重新渲染整个页面,请不要使用Ajax。只需使用常规表单提交即可。

(并将 search 参数放在查询字符串中,而不是自定义 header)。