我正在开发一个快速应用程序,我需要在其中为'/'路由呈现目标网页。此页面有一个文本框和一个按钮。当用户将文本添加到文本框并点击提交按钮时,我需要向同一个URL发出请求,但添加了文本作为其查询参数。此请求将呈现一个新页面,其内容取决于查询文本。
现在发生的事情是当用户在文本框中输入文本并按下按钮时,表单使得GET请求和路由看起来像http://localhost:3000/?q=abc
。我可以在chrome开发人员工具的网络选项卡中将此请求视为待处理,但此请求永远不会到达服务器。我在服务器控制台中看不到/?q=abc
的任何请求。
如果我重新启动服务器然后打开http://localhost:3000/?q=abc
,则会在浏览器中加载正确的内容。但是,如果我将url更改回http://localhost:3000
,我可以在网络选项卡中看到待处理的请求,并且此请求永远不会到达服务器。
我的代码类似于:
app.get('/', function(req, res, next) {
if(req.query.q)
res.render('results.ejs');
else
res.render('landing.ejs')
});
知道为什么不打电话给服务器?我花了一整天的时间试图弄清楚这种行为的原因。任何帮助将不胜感激。
答案 0 :(得分:1)
您是否尝试过插入临时中间件以查看请求在中间件/路由链中的确切位置?听起来有些中间件在某些情况下没有调用next()
。