3

これは非同期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>

ボタンをクリックすると、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
    });
}

フォームに入力した後、ボタンを押すとエラーが発生し、フィールドが空白になり、URL の末尾に「?#」が追加されます。この後にログインしようとすると、完全に機能します。前もって感謝します!


4

1 に答える 1

6

このページを初めて読み込んで「ログイン」をクリックすると、フォームが送信され、ページがリロードされるため、単純なログインが正常に完了しません。ボタンがフォームを送信できないようにする方法 を参照してください。

于 2014-08-01T05:04:45.707 に答える