如何从ejs页面重定向到另一个页面

时间:2019-06-21 07:22:10

标签: javascript jquery node.js express ejs

我的代码是:

@Html.Action("PartialViewName","ControllerName")

注意:在不传递res的情况下,需要来自node.js控制器的请求

当我添加此代码时:

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

对我不起作用。 告诉我错误:

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

3 个答案:

答案 0 :(得分:1)

这是您可以尝试的技巧

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
 <%
}%>

让我知道它是否对您有用

答案 1 :(得分:0)

直到现在,我还没有找到一种从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');
    }
});

答案 2 :(得分:0)

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

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

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

祝您编程愉快!