Показывать флеш-сообщение из server.js в html, в частности, div с id - PullRequest
0 голосов
/ 01 марта 2019

Я получаю сообщение об ошибке из server.js, и оно отображается с помощью «connect-flash», но перенаправляется с пустой страницы.Я хочу показать сообщение на той же странице в определенном div с идентификатором в html.Вот мой код server.js

 app.get('/', function (req, res) {
    // var username = req.body.
    if (global.debugMode) debugger;
    console.log("userLogin.html".grey);
    var loginmsg = req.flash('error');
    if(loginmsg.length>0){
        console.log(loginmsg);
        res.send('<h3>'+loginmsg+'</h3>');
    }
    res.sendFile(`${path.dirname(__dirname)}//public/Login/userLogin.html`);
});

Я хочу показать 'loginmsg' в определенном div на той же странице, но он исчезает на пустой странице

1 Ответ

0 голосов
/ 01 марта 2019

Я думаю, что ваша проблема связана с выражением понимания.Вы получаете пустую страницу с вашим флэш-сообщением в <h3>?Это потому, что вы делаете res.send, когда у вас есть флэш-сообщение.Мы можем отправить только один ответ на один запрос (https://www.webnots.com/what-is-http/), или здесь вы пытаетесь отправить сначала h3, а затем отправьте html-файл. Это плохой способ сделать такие вещи.

Сначаларешение

С вашим решением единственный способ сделать то, что вам нужно, - это динамически построить строку html:

var myHtml = `<html><head>...</head><body>`

if(loginmsg.length > 0) { myHtml += `<h3>${loginmsg}</h3>` }

myHtml += `rest of my page ...`
myHtml += `</body></html>`

res.send(myHtml)

Но, очевидно, это не очень хорошая практика.

Хорошая практика

Использование шаблонов! (http://expressjs.com/en/guide/using-template-engines.html). С шаблоном вы можете создать HTML-страницу с динамическими значениями в ней, как ваше флеш-сообщение! С шаблоном ejs (https://www.npmjs.com/package/ejs)у вас будет .ejs шаблон файла, подобный этому:

<html>
<head>...</head>
<body>
    <% if (loginmsg) { %>
      <h3><%= loginmsg %></h3>
    <% } %>

    Rest of my page...
</body>
</html>

А в вашем экспресс-приложении:

 app.get('/', function (req, res) {
    var loginmsg = req.flash('error');
    ...
    res.render('myTemplate', { loginmsg });
});

Веселитесь ✌️

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...