我正在尝试实现一个功能,在这个路径上有一个输入,以便在数据库中实时搜索员工。
app.get('/delete' , isLoggedIn , (req , res) => {
res.render('pages/delete')
})
此路径为搜索输入提供服务。如何创建基于keyup事件侦听器的实时搜索,该侦听器将数据发送到mongoDb/mongoose以搜索并返回页面上的结果?
我知道如何执行事件侦听器来获得类似于delete.js文件中的类型
const deleteSearchInput = document.querySelector('#search-input');
deleteSearchInput.addEventListener('keyup' , (e) => {
let search = e.target.value.trim()
})
如何将值"e“发送到post路由以执行搜索并将其返回到页面
发布于 2022-01-11 23:11:54
AJAX (使用JavaScript fetch
API)。AJAX允许JavaScript在不重新加载的情况下向服务器发送请求。
const deleteSearchInput = document.querySelector('#search-input');
deleteSearchInput.addEventListener('keyup' , (e) => {
let search = e.target.value.trim();
fetch('/delete', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({search})
}).then(res =>
res.json()
).then(data => {
console.log(data.result); // <-- success!
}).catch(err => {
alert('error!');
console.error(err);
});
});
然后,您需要对服务器端进行更改。由于您要发送一个POST请求,所以需要创建一个处理程序来发布:
app.post('/delete', isLoggedIn, (req, res) => {
res.send('success!');
});
这将处理post请求,并且只处理post请求。现在,要获得发送给服务器的任何内容的值,我们需要使用一个名为body解析器的npm包,它解析传入的请求。在shell中运行以下命令:
npm i body-parser
然后,在声明路由之前,在服务器文件的顶部导入和使用body解析器库:
const bodyParser = require('body-parser');
app.use(bodyParser.json()); // <-- add the JSON parser
最后,再次更改处理程序:
app.post('/delete', isLoggedIn, (req, res) => {
const { search } = req.body;
console.log(search);
// ... do whatever you want and send a response, e.g.:
const result = 'my awesome message';
res.json({ result });
});
你就是这么做的。
https://stackoverflow.com/questions/70673135
复制相似问题