2017-03-06 3 views
1

J'utilise Ajax et Node JS pour permettre à un utilisateur de s'inscrire sur une application d'une page. Lorsque l'utilisateur frappe le registre, je l'ai configuré pour vérifier si le nom d'utilisateur est pris. Tout cela fonctionne jusqu'à présent. Maintenant, cependant, je dois avertir l'utilisateur que son nom d'utilisateur est pris. Comment est-ce que j'imprimerais l'erreur ou ferais clignoter l'erreur à l'utilisateur de cette façon? Le problème est que j'évite les rafraîchissements de page.Flash NodeJS erreur à l'utilisateur?

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 set-up

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

Répondre

2

d'abord envoyer votre réponse dans l'instruction if dans le code du serveur:

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" }); 
     } 

}); 

Puis dans votre extrémité avant d'ajouter la fonction de réussite pour gérer la réponse:

$(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

Qui a travaillé absolument pe parfaitement. Merci beaucoup! – AndrewLeonardi