Firebase网站注册新用户时页面异常刷新问题排查求助
解决Firebase注册时页面刷新的问题
我帮你找到了两个关键问题,咱们一步步来排查解决:
1. jQuery获取输入值的语法错误
你代码里的$("#register_email").val和$("#register_password").val少了括号!val()是jQuery的方法,必须加括号才能获取到输入框的实际值,不加括号的话,你传递给Firebase的是函数本身,而不是用户输入的邮箱和密码。这会直接导致createUserWithEmailAndPassword抛出错误,虽然你加了catch,但这个错误可能会干扰表单默认行为的阻止逻辑。
修正后的注册函数应该是这样:
function registerNewUser() { // 注意这里的val()加了括号,才能拿到输入值 const email = $("#register_email").val(); const password = $("#register_password").val(); firebase.auth().createUserWithEmailAndPassword(email, password) .then((user) => { // 注册成功后的逻辑,比如跳转首页或提示成功 console.log("用户注册成功:", user); }) .catch((error) => { var errorCode = error.code; var errorMessage = error.message; window.alert(errorMessage); }); }
2. 确保表单默认提交行为被彻底阻止
虽然你在onsubmit里写了return false;,但如果registerNewUser执行时抛出未捕获的错误(比如刚才的val语法错误),代码可能会中断,导致return false没被执行到。更稳妥的方式是调整写法:
把form的onsubmit改成直接返回函数结果:
<form id="register_form" onsubmit="return registerNewUser();">
然后让函数始终返回false:
function registerNewUser() { const email = $("#register_email").val(); const password = $("#register_password").val(); firebase.auth().createUserWithEmailAndPassword(email, password) .then((user) => { // 注册成功逻辑 }) .catch((error) => { window.alert(error.message); }); // 始终返回false,确保页面不会刷新 return false; }
先修正第一个val的语法问题,这是最核心的错误,应该就能解决页面刷新的问题了!
内容的提问来源于stack exchange,提问作者Aadi
相关产品推荐
相关产品推荐

