新手请教,关于Express查询字符串的路由方法
我在之前没有接触过PHP,用过Django写简单的静态Web应用,目前有项目需要实现搜索功能,用Express来实现。 我想要用户在搜索框中输入内容后提交POST请求之后路由到类似/search?keyword=xxx的带查询字符串的URL上, 一开始尝试post之后res.redirect(),然后再写一个接受这个redirect的get请求路由,用正则表达式/s\?wd=.+/ 好像不太行,有没有什么方法能实现这样的功能,或者说这么做有没有必要?谢谢
不好意思,刚知道实际上query string不是路由的一部分,那么当我们在搜索引擎的搜索框输入内容之后post,浏览器的URL显示bar会有query string如下图 这样的效果在node express等web框架中如何简单地实现呢?
以下是失败的尝试代码:
/* form in home page 首次搜索 */
router.post('/', function(req, res, next) {
var q = req.body.query; //HTML代码input标签对应的name属性是query
res.redirect('/s?wd='+q.replace(/ /g,'+'));
});
/* 第二次以后的搜索 */
router.post(/s\?wd=.*/, function(req, res, next) {
var q = req.body.query;
console.log(query);
res.redirect('/s?wd='+q.replace(/ /g,'+'));
});
/* get接收前面写的redirect()做渲染等工作 */
router.get(/s\?wd=.*/, function(req, res, next) {
var query = req.query.wd;
console.log(query);
res.render('search', {q: query});
});
经过几番相关资料的查询和自己的理解,一般搜索的实现是一个get请求而不是post,也就是说可以先设置好具体词条的路由,然后在首页用ajax发get请求去请求搜索框内输入的词条,然后渲染页面 - -