2017-03-17 18 views
0

pugファイルをレンダリングした後、サーバーの応答を取得した後、htmlビューが変更されないという問題があります。レンダリング後の表示は変更されていません。

コードが

app.set('view engine', 'pug'); 
app.set("views", require('path').join(__dirname, "views")); 

app.post('/login', function(req, res, next) { 
console.log(req.body); 
checkExistanceOfuser(req.body.username, req.body.password, function(err, flag, data) { 
    console.log(err); 
    if (err) { 
     res.send({ 
      err: 'SOME_DATABASE_ERROR' 
     }) 
    } else { 
     if (flag) { 

      req.session.user = data; 

      /*res.send({ 
       success: true, 
       message: 'Login Success' 
      })*/ 

      res.render('welcome', { name: data.name }); 
     } else { 
      /*res.send({ 
       success: false, 
       message: 'Invalid Credentials' 
      });*/ 
      res.render('login', { error: 'Invalid Credentials' }); 
     } 
    } 
}) 

以下であるが、私はbrowser.The APIレスポンス(プレビュー)からのネットワークセクションでチェックすることは結構です。

+0

ページがレンダリングされないという問題はありますか?どのページ? – Aron

答えて

0

/loginを呼び出すと、それはポストコールであり、そうするためにはおそらくあなたはajaxポストコールを使用しています。 /loginをレンダリングしてレンダリングすると、pugファイル が実際にブラウザDOMに影響しません。だから、あなたが何をする必要があるか、この

この

app.get('/login-success', function(req, res, next) { 
     if (req.session && req.session.user) { 
      res.render('welcome', { name: req.session.user.name }); 
     } else { 
     res.redirect('/'); 
     } 
    }); 

などの新しいルートを作成して、AJAX呼び出し、使用中のこの

app.post('/login', function(req, res, next) { 
     console.log(req.body); 
     checkExistanceOfuser(req.body.username, req.body.password, function(err, flag, data) { 
     console.log(err); 
     if (err) { 
     res.send({ 
      err: 'SOME_DATABASE_ERROR' 
     }) 
     } else { 
      if (flag) { 

       req.session.user = data; 

       res.send({ 
        success: true, 
        message: 'Login Success' 
       }); 
      } else { 
       res.send({ 
       success: false, 
       message: 'Invalid Credentials' 
       }); 
      } 
      } 
     }) 
    }); 

のようなログイン機能を変更している。この

function login(){ 
    $.post("http://localhost:8000/login", 
    { 
    username:document.getElementById("name").value, 
    password:document.getElementById("password").value, 
    }, 
    function(data, status){ 
    if(data.success){ 
     window.location = "http://localhost:8000/login-success" 
    } 
    }); 
    } 
+0

あなたの答えをありがとう –

0

views/loginをレンダリングしていますが、ビューフォルダがviewsであることが既に指定されています。ちょうどloginをレンダリングしてください。

+0

私もそれを試しました。しかし、それは動作していません –

関連する問題