Traté de crear una aplicación simple, pero tengo un problema. Mi aplicación es solo algunos datos de personas guardados en la base de datos y el objetivo es solo mostrarlos en la pantalla, pero podemos buscar a esas personas por su nombre. tengo una página ejs y un archivo javascript conectado a él
codigo js:
document.querySelector(".search__box_input").addEventListener("click", async function(event) { fetch("/", { method: "get", headers: new Headers({'search': searchButton.value}) }) })código de nodo:
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 }) } })quiero renderizar los ejs de nuevo... alguien me puede ayudar pls?
El objetivo de Ajax es que realiza una solicitud con JavaScript y la respuesta se devuelve a su JavaScript para que la procese. Por lo general, esto implicaría hacer una actualización de DOM .
Su JavaScript está ignorando por completo la respuesta.
const response = await fetch(...); const text = await response.text(); console.log(text);Si desea renderizar toda la página nuevamente, no use Ajax. Simplemente use un envío de formulario regular.
(Y coloque el parámetro de search en la cadena de consulta en lugar de un encabezado personalizado).