2013-07-13 4 views
1

Я пытаюсь использовать простой вход Firebase и пытаюсь следовать общим методам, изложенным в How do I use Firebase Simple Login with email & password.аутентификация по электронной почте/паролю для firebase SERVER_ERROR

Everytime я пытаюсь создать новый пользователь (или войти), однако, я получаю

SERVER_ERROR: The connection to wss://s-xxxxxxxx was interrupted while the page was loading.

Как это вызвано и как я могу решить эту проблему?

Кроме того, он работает с Firefox, когда я указываю значения hardcode (т. Е. Беру createUser за пределами обработчика регистрации регистра), но не в Chrome.

login.html

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> 
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script> 
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase-simple-login.js'></script> 
    </head> 
    <body> 
     <div id="login_or_register"> 
     </div> 
     <button id="logout">Logout</button> 
     <script type='text/javascript' src='loginScript.js'></script> 
    </body> 
</html> 

loginScript.js

function showLoginRegister(auth){ 

        $register_form = $('<form id="register">'+ 
         '<input type="text" name="register-email" id="register-email" value="[email protected]">'+ 
        '<input type="password" name="register-password" id="register-password" value="password">'+ 
        '<input type="submit" value="Create an account!"/>'+'</form>') 

        $login_form = $('<form id="login">'+'<input type="text" name="login-email" id="login-email" value="[email protected]">'+ 
        '<input type="password" name="login-password" id="login-password" value="password">'+ 
        '<input type="checkbox" name="rememberCheckbox" id="rememberCheckbox" checked>'+ 
        '<input type="submit" value="Sign in"/>'+'</form>') 
        $('#login_or_register').append($register_form,$login_form); 

        $("#register").submit(function() { 
         var email = $("#register-email").val(); 
        var password = $("#register-password").val(); 
        auth.createUser(email, password, function(error, user) { 
          if (!error) { 
            auth.login("password", { 
            email: email, 
            password: password, 
            rememberMe: false 
           }); 
          } 
          else{ 
           console.log(error); 
          } 
         }); 
        }); 

        $("#login").submit(function() { 
         var email = $("#login-email").val(); 
        var password = $("#login-password").val(); 
        var checkbox = $("#rememberCheckbox").val(); 
         auth.login("password", { 
          email: email, 
          password: password, 
          rememberMe: checkbox 
         }); 
        }); 
       }; 


       var ref = new Firebase('https://xxx.firebaseio.com/'); 
       var auth = new FirebaseSimpleLogin(ref, function(error, user) { 
        if (error){ 
         console.log(error); 
         return; 
        } 
        if (user) { 
        // user authenticated with Firebase 
         $("#logout").click(function(){ 
          auth.logout(); 
         }) 
        } 
        else { 
        showLoginRegister(this); 
         // user is logged out 
        } 
       }); 

ответ

3

Проблема вы видите, что сетевой запрос для методов входа в систему не удается, так как вы навигации от текущей страницы, прежде чем они могут полный. Форма фактически отправляется, и в результате страница перенаправляется/обновляется.

Во избежание такого поведения обновите код, чтобы включить return false; в нижней части каждого из методов $(element).submit(), что предотвратит отправку формы и завершение запросов на аутентификацию.

$("#el").submit(function() { 
    // Do stuff here ... 
    return false; 
}); 
+0

Спасибо, работает как очарование! –

Смежные вопросы