2013-07-13 36 views
1

我试图使用Firebase的简单登录并尝试遵循How do I use Firebase Simple Login with email & password中列出的一般方法。用于Firebase的电子邮件/密码验证SERVER_ERROR

每次我试图创建一个新用户(或登录),但是,我得到一个

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

这是怎么造成的,我该怎么解决呢?

此外,它在Firefox上工作时,我硬编码值(即采取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

你看到的问题是,对于登录方法的网络请求是失败,因为你是从当前页面才可以远离导航完成。表单实际上正在提交,并且页面因此被重定向/刷新。

为了防止发生这种情况,请更新您的代码,使其包含在每个$(element).submit()方法底部的return false;,这将阻止表单提交并且完成身份验证请求。

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

谢谢,作品像一个魅力! –

相关问题