jquery - Flash NodeJS 对用户出错?

标签 jquery ajax node.js mongodb flash-message

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

最佳答案

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

关于jquery - Flash NodeJS 对用户出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630103/

相关文章:

javascript - 在点击时显示社交图标的子列表

javascript - 如何阻止固定侧边栏与页脚与 jQuery 重叠?

javascript - 帮助 JS setInterval,有时会很疯狂!

php - 限制 Ajax 调用的路由,在 Symfony 2.6+ 中可以吗?

JavaScript promise : UnhandledPromiseRejectionWarning

node.js - 我们应该使用 Async/Await 还是 Then 闭包来避免内存泄漏?

node.js - 如何在 Node js中将promise转换为回调?

php - 使用 3D 透视预览打印 Canvas 包装

php - 检测同时上传进程

javascript - jQuery ajax beforeSend 阴影 `$.ajaxSetup` 之一,如何级联它?