如何解决如何在不转到新页面的情况下发送状态标头?
function checkRegisterError() {
const xhr = new XMLHttpRequest();
xhr.open("GET","http://ipaddressandport/users/register");
xhr.onload = () => {
console.log("tes");
if (xhr.status === 400) {
console.log("rip");
}
};
xhr.send();
}
const signupBtn = document.querySelector(".signup-form-btn");
if (signupBtn) {
signupBtn.addEventListener("click",() => {
console.log("ok");
checkRegisterError();
});
}
我正在使用 nodejs 和 express。所以我在我的注册按钮上应用了这个,这也是一个提交表单的类型,操作为 /users/register。在我的节点上,我有这个注册到 /users/register 的代码:
exports.addUser = (request,respond) => {
if (
!request.body.firstName ||
!request.body.lastName ||
!request.body.email ||
!request.body.username ||
!request.body.password ||
!request.body.gender ||
!request.body.mobileNumber ||
!request.body.address
) {
respond.status(400).send("error empty input etc etc");
} else {
db.execute(
"INSERT INTO users(firstName,lastName,email,username,password,gender,mobileNumber,address,profilePictureUrl) VALUES(?,?,?)",[
request.body.firstName,request.body.lastName,request.body.email,request.body.username,request.body.password,request.body.gender,request.body.mobileNumber,request.body.address,"https://www.eurogeosurveys.org/wp-content/uploads/2014/02/default_profile_pic.jpg",]
)
.then((result) => {
console.log(result);
respond.redirect("/");
})
.catch((err) => console.log(err));
}
};
问题是,每当我按注册时,表单就会转到路由,并且它将是我发送的任何内容的空白页,并且不会有记录输出。我想根据消息和状态代码的内容更改某些元素属性。我怎么能那样做?为什么我被定向到一个带有我发送的文本的空白页面?
<form class="sign-up-form" action="/users/register" method="POST">
<div class="nav-name">
<input name="firstName" type="text" class="input first-name" placeholder="First name">
<input name="lastName" type="text" class="input last-name" placeholder="Last name">
</div>
<input name="email" type="text" class="input email" placeholder="Email">
<input maxlength="16" name="username" type="text" class="input username" placeholder="User ID">
<div class="password-container">
<input maxlength="16" name="password" type="password" class="input password" placeholder="Password">
<label class="toggle-password" for="toggle-password-register">
<i class="show-password fas fa-eye"></i>
<i class="hide-password fas fa-eye-slash"></i>
</label>
<input id="toggle-password-register" type="checkbox" class="toggle-password__input">
</div>
<input name="gender" type="text" class="input gender" placeholder="Gender">
<input name="mobileNumber" type="text" maxlength="8" class="input mobile-number"
placeholder="Mobile number">
<input name="address" type="text" class="input address" placeholder="Address">
<button type="submit" class="form-btn signup-form-btn">Sign up</button>
</form>
解决方法
你被重定向到空页面,因为你写了 response.redirect('/') ,你应该检查 Db 操作是否成功,然后根据发送给用户的响应。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。