2017-03-06 2 views
1

私はAjaxとNode JSを使用して、ユーザーが1ページのアプリケーションに登録できるようにしています。ユーザーがレジスタを押すと、ユーザー名が取得されたかどうかを確認するように設定されています。これまでのすべてがこれまでに働いています。しかし、今私は、ユーザー名が取られたことをユーザーに警告する必要があります。この方法でエラーを印刷するか、エラーをユーザーにフラッシュするにはどうすればよいですか?問題は、ページのリフレッシュを避けることです。ユーザーにFlash NodeJSエラーがありますか?

app.post("/quiz", function(req, res, next){ 
    User.findOne({username: req.body.username}, function(err, user){ 
     if(err) { console.log(err)} 
     if(user) { 

     console.log(user) 
     // I NEED TO SEND THE ERROR HERE SAYING THE USERNAME IS TAKEN  
     // I NEED TO SEND THE ERROR HERE SAYING THE USERNAME IS TAKEN  
     // I NEED TO SEND THE ERROR HERE SAYING THE USERNAME IS TAKEN  
     } 

    }); 

     //continue with your registration logic 
     var newUser = new User({username: req.body.username, datapoint: req.body.datapoint}); 
     User.register(newUser, req.body.password, function(err, user){ 


     // if(res.error){ 

      if(err){ 
       req.flash("error", err.message); 
       res.redirect('back') 
       return res.render("quiz"); 

      } else { 

      passport.authenticate("local")(req, res, function(){ 
      // req.flash("success", "Welcome to JobQuiz " + user.username); 
      res.redirect("jobquiz"); 
      console.log(req.body.datapoint) 
      }); 
      } 
     }); 



}); 

Ajaxはセットアップ

$(function() { 
       $("#checkpaymentForm").on("submit", function(e) { 
        e.preventDefault(); 
        $.ajax({ 
        url: $(this).attr("action"), 
        type: 'POST', 
        data: $(this).serialize(), 
        dataType:'json', 
       }) 
       }); 
    }); 

答えて

2

まず、サーバーコードでのif文であなたの応答を送信します。

app.post("/quiz", function(req, res, next){ 
    User.findOne({username: req.body.username}, function(err, user){ 
     if(err) { console.log(err)} 
     if(user) { 
      res.json({"message": "false" }); 
     } 

}); 

は、その後、あなたのフロントエンドで処理するために、成功の機能を追加応答:

$(function() { 
      $("#checkpaymentForm").on("submit", function(e) { 
       e.preventDefault(); 
       $.ajax({ 
        url: $(this).attr("action"), 
        type: 'POST', 
        data: $(this).serialize(), 
        dataType: 'json', 
        success: function (data) { 
        if (data.message === "false") { 
         //TODO: alert users here 
        } 
       }) 
      }); 
    }); 
+0

これは絶対に機能しました完璧に。どうもありがとうございます! – AndrewLeonardi

関連する問題