首页 > 解决方案 > 在 EJS 模板中的 response.render 上显示警报,如果语句在 EJS 中不起作用

问题描述

我有一个注册端口请求,完成后它会呈现一个带有口头注册请求的 EJS 模板:“成功”。

但是当我去 localhost:8888/ 然后它给了我这个错误

错误:

    ReferenceError: /Users/oliver_christensen/Documents/codeFiles/nodejs-app-1/views/index.ejs:36
    34| </style>
    35| <body>
 >> 36|     <% if (signupRequest) { %> 
    37|        <script>alert('You have been signed up successfully!');</script> 
    38|     <% } %>
    39|     

signupRequest is not defined

当我一直在 signup.html 上并发送 post 请求时。然后它工作并 index.ejs 渲染。

它只是当你去 localhost:8888/ 没有注册后请求时,它给了我错误......


我是不是做错了什么,或者,谢谢你的帮助:)


我的代码:

server.set('view engine', 'ejs');

server.use(bodyParser.urlencoded({
    extended: true
}));

server.get('/', (req, res) => {
    res.render('index');
});

server.post('/signup', (req, res) => {
    // at the end of signup requset function
    res.render('index', {signupRequest: 'success'});
}

标签: node.jsexpressejs

解决方案


我认为这是因为对于 POST 和 GET 方法,您引用的是相同的模板。问题是当你去 GET localhost:8888/ 你没有传递第二个参数{signupRequest: false}。设置为false不触发警报。

server.get('/', (req, res) => {
    res.render('index', {signupRequest: false});
});

推荐阅读