【问题标题】:How to get the value for the search function in Node Js?如何获取 Node Js 中搜索功能的值?
【发布时间】:2020-04-25 17:14:24
【问题描述】:

我有这个功能可以使用 Node.JS、Handlebars 和 MySQL 中的 Express 框架创建搜索栏。与 MySQL 的连接已经正常工作,已经安装了正文解析器,并且我已经检查了直接在 phpmyadmin 中硬编码的查询(没有 req.body)并且它有效,但是当我将它应用于 Node.JS 时它不起作用

车把内

<form role="form" action="naskah_form/search" method="get">
        <input type='text' name='titlesearch' id='q' placeholder='Enter a keyword...' required autocomplete='off'>
        <input type='submit' value='Search' id='submit'>
</form>

naskah_form.js 内:

router.get('/search', (req,res)=>{
    let sql = "SELECT * FROM upload_test where title LIKE '% "+ 
         req.body.titlesearch + "%'"
    conn.query(sql, (err,results)=>{
    if (err) throw err
        res.json(results[0])
    })
})

module.exports = router

我希望结果至少会显示搜索词的 json 列表,比如说“q”。网址是http://localhost:3000/naskah_form/search?titlesearch=q,但里面是空白的。 谁能指导我如何解决这个问题?

【问题讨论】:

    标签: html node.js express web handlebars.js


    【解决方案1】:

    如果您使用 GET 方法提交表单,请使用 req.query.titlesearch

    router.get('/search', (req, res) => {
        console.log(req.query);
    })
    

    如果您使用 POST 方法提交表单,那么req.body.titlesearch

    router.post('/search', (req, res) => {
        console.log(req.body);
    })
    

    【讨论】:

    • 感谢您的回答,但我只是将其更改为查询,它仍然不会显示
    • 您能告诉我您在req.bodyreq.query 中得到什么回复吗?
    • 假设我输入单词 'q' ,页面上的结果在两种方法中仍然是空白,但 url 是 localhost:3000/naskah_form/search?titlesearch=q
    • 尝试调试您的代码尝试:console.log("SQL query = ", sql); 并检查控制台并手动尝试该查询。
    • 我终于解决了这个问题,改用let sql = "SELECT * FROM upload_test where title LIKE '%"+req.query.titlesearch+"%'"这个。非常感谢您的帮助! :D
    猜你喜欢
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多