2017-01-12 15 views
2

login.ejsファイルにログインフォームがあります。情報を入力した後にsubmitをクリックします。詳細が正しい場合はページにリダイレクトします。パスワードは、詳細node.jsのリダイレクト中にexpressから.ejsファイルにデータを渡す方法

ここwrong.Belowあるであること.ejsで何かを表示するようにすると、私のapp.jsはこちらコード - ファイルである私は1つのJSONを送信し、その無効なパスワードを隠してい.ejsファイル内

app.get('/', function (req, res) { 

    res.render("login",{Error:"none"}); 

}); 

app.post('/login', function (req, res) { 

    var username = req.body.username; 
    var password = req.body.password; 
    //Here will be my code to check detail wrong or right 
    res.redirect('/',{Error:'block'}); 
} 

ここに私のlogin.ejsファイル

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
    <link rel="stylesheet" href="css/style.css" type="text/css" /> 
    <link rel="stylesheet" href="css/font.css" type="text/css" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 

</head> 

<body> 
    <div class="Error" id="error" style="display:<%=Error%>;">Invalid email/phone or password</div> 
    <div class="Body"> 
     <form class="LogBox" action="/login" method="post"> 
      <div class="Head">Log In</div> 
       <input type="text" placeholder="Email or Phone" class="inputfrontbutton" name="username"> 
       <input type="password" placeholder="Password" class="inputfrontbutton" name="password"> 
       <input type="submit" value="Log In" class="frontsubmit"> 
     </form> 
    </div> 
</body> 

</html> 

しかし、リダイレクトでjsonデータを送信することができません。これを行う方法はありますか?

+0

上の任意のエラーをフラッシュするexpress-flashを使用することができますLink to setup Sessions
req.session['error'] = "Error";
req.redirect('/');

  • 答えて

    1

    .redirect方法のdocsを発現するようによれば、送信する使用:

    res.redirect([ステータス]パス)

    を用いて、指定されたパスに由来するURLにリダイレクト指定されたステータスは、HTTPステータスコードに対応する正の整数です。指定されていない場合、ステータスは "302" Found "にデフォルト設定されます。

    だから、あなたがそのようにそれを呼び出すことはできません。

    res.redirect('/',{Error:'block'}); 
    

    であっても、そのメソッドの仕事ならば、それだけで、app.get('/', function (req, res) {...}エンドポイントをトリガし、最初のログインページが表示されますされ、'/'にリダイレクトますエラーメッセージは表示されません。

    私はあなたが以下のように使用することができますres.redirectをどうするけどres.render方法でjsonを渡すことができ、それは

    res.render("login",{Error:"block"}); 
    
    +0

    恐ろしくありがとうございます。本当にうまくいきます。 –

    0

    AJAXを使用している場合は、AJAXコールの後でリダイレクトすることはできません。代わり

    res.send({Error:'block'}); 
    
    +0

    本当にありがとうございました。 –

    0

    app.post('/login', function (req, res) {...}で最後の行を変更するための最良の方法と考えています。

    1. あなたはもう一つの方法は、セッション中に何かを使用しているencodeURIComponent
      app.get('/user', function(req, res) { var error = encodeURIComponent('error'); res.redirect('/?user=' + error); });
    2. を使用することができます。また、あなたは `ERROR`があなたの` login.ejs`に渡され、表示されていないを意味していますか?ページBasic example an Usage of express-flash
    +0

    ありがとうございました。 –

    関連する問題