【问题标题】:How to redirect to another page from ejs page如何从ejs页面重定向到另一个页面
【发布时间】:2019-11-04 00:36:43
【问题描述】:

我的代码是:

<%
var result = [];
if(result.length>0)
{
 //do nothing
}
else
{
 //redirect page to "/product-not-found"
 //window.location.replace("http://stackoverflow.com"); is not working
}
%>

注意:不传递 res,req 来自 node.js 控制器

当我添加此代码时:

window.location.replace("http://stackoverflow.com");

它不适合我。 显示错误:

window is not defined
    at eval (eval at compile (\node_modules\ejs\lib\ejs.js:618:12), <anonymous>:215:37)
    at returnedFn (\node_modules\ejs\lib\ejs.js:653:17)
    at tryHandleCache (\node_modules\ejs\lib\ejs.js:251:36)
    at View.exports.renderFile [as engine] (\node_modules\ejs\lib\ejs.js:482:10)
    at View.render (\node_modules\express\lib\view.js:135:8)
    at tryRender (\node_modules\express\lib\application.js:640:10)
    at Function.render (\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (\node_modules\express\lib\response.js:1012:7)
    at \controllers\productController.js:1274:8
    at \node_modules\mongoose\lib\model.js:4733:16
    at \node_modules\mongoose\lib\utils.js:263:16
    at \node_modules\mongoose\lib\aggregate.js:973:13
    at \node_modules\kareem\index.js:135:16
    at processTicksAndRejections (internal/process/task_queues.js:82:9)

【问题讨论】:

  • 它不起作用@SiddharthDas 我已经尝试过了它不是 js 它是“product.ejs”页面

标签: javascript jquery node.js express ejs


【解决方案1】:

我可能迟到了,但我遇到了这个问题,这就是我解决它的方法:

<% if (yourBoolean) { %>
  <script> document.location.href = '/your-redirect' </script>
<% } %>

通过脚本标签强制重定向,with EJS,而不是重定向from EJS。

编码愉快!

【讨论】:

    【解决方案2】:

    直到现在,我还没有找到从 ejs 页面重定向到另一个页面的方法,如果您正在使用您应该在该 ejs 页面中使用的变量中的数据。

    所以我的解决方案是从服务器端重定向,而不是从客户端。 在下面的示例中,有一个登录页面,登录成功时呈现帐户页面,登录不成功时再次呈现登录页面。

    文件:node.js

    //Profile page
    app.get('/account', function (req, res) {
        if(req.session.user){
            // user can access account page
            let sess = req.session;
            console.log(sess);
    
            res.render('account', {user: sess.user});
        }
        else{
            // user cannot access account page
            // -> display again the login page
            res.render('login');
        }
    });
    

    【讨论】:

      【解决方案3】:

      这是一个你可以尝试的技巧

      1-使用以下代码创建一个名为 redirect.ejs 的文件

      <!DOCTYPE HTML>
      <html lang="en-US">
          <head>
              <meta charset="UTF-8">
              <meta name="robots" content="noindex, nofollow">
              <meta http-equiv="refresh" content="1;url=<%= url %>">
              <script type="text/javascript">
                  window.location.href = "google.com"
              </script>
          </head>
          <body>
              If you are not redirected automatically, <a href="<%= url %>">click here</a>.
          </body>
      </html>
      

      2-像这样在代码中将此文件称为部分文件

      <%
      var result = [];
      if(result.length>0)
      {
       //do nothing
      }
      else
      {
      %>
      <%- include('redirect.ejs')%>// redirect to
       <%
      }%>
      

      让我知道它是否适合你

      【讨论】:

      • 它显示错误:部分未在 eval 处定义(编译时的 eval (\node_modules\ejs\lib\ejs.js:618:12),:219:7) 在 returnedFn (\node_modules\ejs\lib\ejs.js:653:17) at tryHandleCache (\node_modules\ejs\lib\ejs.js:251:36) at View.exports.renderFile [作为引擎] (\node_modules\ejs\ lib\ejs.js:482:10) 在 View.render (\node_modules\express\lib\view.js:135:8) 在 tryRender (\node_modules\express\lib\application.js:640:10) 在 Function .render (\node_modules\express\lib\application.js:592:3)
      • 很高兴帮助@NiravSutariya
      猜你喜欢
      • 1970-01-01
      • 2011-08-22
      • 2015-08-14
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      相关资源
      最近更新 更多