【问题标题】:Flash NodeJS error to user?向用户发送 Flash NodeJS 错误?
【发布时间】:2017-07-26 14:05:33
【问题描述】:

我正在使用 Ajax 和 Node JS 让用户在单页应用程序上注册。当用户点击注册时,我将其设置为检查用户名是否被使用。到目前为止,所有这些都有效。但是,现在我需要提醒用户他们的用户名已被使用。我将如何打印错误或以这种方式向用户显示错误?问题是我正在避免页面刷新。

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',
                })
                });
   });

【问题讨论】:

    标签: jquery ajax node.js mongodb flash-message


    【解决方案1】:

    首先在服务器代码中的 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
                        }
                     })
                });
       });
    

    【讨论】:

    • 这绝对是完美的。非常感谢!
    猜你喜欢
    • 2017-02-14
    • 2018-04-26
    • 2016-12-20
    • 2010-11-09
    • 2023-04-01
    • 2016-12-12
    • 1970-01-01
    • 2014-08-17
    • 2015-08-16
    相关资源
    最近更新 更多