对于Firebase简单登录,我必须登录两次才能进行注册

let*_*oth 3 javascript firebase firebasesimplelogin

我很确定这是我没有完全理解异步javascript的问题,但是我将解释我的问题。

我有一个通过Firebase认证的电子邮件/密码,并且我具有以下形式的登录页面:

<form class="form-signin" role="form" action="#" onsubmit="return login(this);">
    <h2 class="form-signin-heading">Please log in</h2>
    <input type="email" id="email" class="form-control" placeholder="Email address" required autofocus>
    <input type="password" id="password" class="form-control" placeholder="Password" required>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Log in</button>
</form>
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,我的JS控制台中出现以下错误,该错误非常快地闪烁:

未捕获的TypeError:无法读取未定义的属性'token'--- firebase-simple-login.js:132

在head标签的底部,包括脚本“ js / firebase.js”,这是该文件:

var myRef = new Firebase("https://xxxx.firebaseio.com");

var auth = new FirebaseSimpleLogin(myRef, function(error, user) {
  if (error) {
    console.log(error);
  } else if (user) {
    console.log("User ID: " + user.uid + ", Provider: " + user.provider);
  } else {
  }
});

function login(form)
{
    auth.login('password', {
      email: form.email.value,
      password: form.password.value
    });
}
Run Code Online (Sandbox Code Playgroud)

填写表格后,按按钮并得到错误消息,这些字段变为空白,并且URL末尾附加了“?#”。如果我在此之后尝试登录,它将非常有效。提前致谢!


Oss*_*ama 5

首次加载此页面并单击“登录”时,将提交表单,并且页面将重新加载,从而阻止简单的登录成功完成。请参阅如何防止按钮提交表单