我使用 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/