gpt4 book ai didi

node.js - 使用Ajax从后端获取自定义错误消息

转载 作者:行者123 更新时间:2023-12-03 08:44:23 32 4
gpt4 key购买 nike

我有一个注册表单,可以毫无问题地提交并将表单数据保存到mongo数据库中。但是,当表格出现错误时,我希望后端脚本发回一个标识问题的字符串,即“所有必填字段”或“密码不匹配”。我不确定自己在做什么错,但是我似乎无法从前端访问该字符串。

这是我在node js中的后端。如果您提交空白表格,则错误消息“所有必填字段”将按预期输出到后端控制台。但是我无法从前端访问它。

router.post("/register", function(req, res, next) {
if (req.body.email &&
req.body.username &&
req.body.password &&
req.body.confirmPassword) {

// confirm that user typed same password twice
if (req.body.password !== req.body.confirmPassword) {
var err = new Error("Passwords do not match.");
err.status = 400;
return next(err);
}

// create object with form input
var userData = {
email: req.body.email,
username: req.body.username,
password: req.body.password
};

User.create(userData, function (error, user) {
if (error) {
return next(error);
} else {
req.session.userId = user._id;
req.session.username = user.username;
return res.redirect(`/profile/${user.username}`);
}
});

} else {
var err = new Error("All fields required");
err.status = 400;
console.log("Error " + JSON.stringify(err)); // THis is ok
return next(err); // This doesn't seem to be working properly
}
})

这是我的前端ajax发布到服务器。
    $("#register-form").submit(function(e) {
e.preventDefault();
var form = $(this);
var url = form.attr('action');

$.ajax({
type: "POST",
url: url,
data: form.serialize(),
})
.done(function(){
alert("Done");
})
.fail(function(a, b, c) {
console.log("a " + typeof a + " " + a + " " + JSON.stringify(a));
console.log("b " + typeof b + " " + b);
console.log("c " + typeof c + " " + c);
})
});

前端控制台输出为:
a object [object Object] {"readyState":0,"status":0,"statusText":"error"}
b string error
c string

最佳答案

我将后端else子句更改为

else {
res.send(400, 'All fields required');
}

有用。

关于node.js - 使用Ajax从后端获取自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57634378/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com