2014-02-10 30 views
3

嗨Stackoverflow成員,Parse.com javascript登錄

我開始學習JavaScript幾天前,但被困在我遇到的問題之一。

形式:

<form class="login-form" method="post" onsubmit="return tryLogin(this);"> 
    <h3 class="form-title">Login to your account</h3> 
    <div class="alert alert-danger display-hide"> 
     <button class="close" data-close="alert"></button> 
     <span> 
      Enter any username and password. 
     </span> 
    </div> 
    <div class="form-group"> 
     <!--ie8, ie9 does not support html5 placeholder, so we just show field title for that--> 
     <label class="control-label visible-ie8 visible-ie9">Username</label> 
     <div class="input-icon"> 
      <i class="fa fa-user"></i> 
      <input class="form-control placeholder-no-fix" type="text" autocomplete="off" placeholder="Username" name="username" id="username"/> 
     </div> 
    </div> 
    <div class="form-group"> 
     <label class="control-label visible-ie8 visible-ie9">Password</label> 
     <div class="input-icon"> 
      <i class="fa fa-lock"></i> 
      <input class="form-control placeholder-no-fix" type="password" autocomplete="off" placeholder="Password" name="password" id="password"/> 
     </div> 
    </div> 
    <div class="form-actions"> 
     <label class="checkbox"> 
     <input type="checkbox" name="remember" value="1"/> Remember me </label> 
     <button type="submit" class="btn green pull-right"> 
     Login <i class="m-icon-swapright m-icon-white"></i> 
     </button> 
    </div> 
</form> 

的Javascript:

<script type="text/javascript"> 
    jQuery(document).ready(function() {  
     App.init(); 
     Login.init(); 
    }); 

    function tryLogin(form) { 

     var username = form.username.value; 
     var password = form.password.value; 

     console.log("Username: " + username + " Password: " + password); 
     Parse.User.logIn(username, password, { 
      success: function(user) { 
       window.location.href="dashboard.html"; 
       //self.undelegateEvents(); 
       //delete self; 
       alert("Sucess"); 
       return true; 
       }, 
      error: function(user, error) { 
       window.location.href="login.html"; 
       alert("Error: " + error.code + " " + error.message + username + password); 
       return false; 
       } 
     }); 

    } 
</script> 

的問題是,當我嘗試登錄我得到一個100的XMLHttpRequest失敗的錯誤。只有當我將數據輸入表單並單擊登錄時纔會發生這種情況。如果我沒有輸入任何數據並單擊登錄,它會正確嘗試登錄。如果我把用戶名+密碼直接放入JavaScript中,它也可以工作 - 但不通過表單。

Console.log,記錄正確的用戶名和密碼輸入,但Parse.User.logIn(用戶名,密碼)不想傳遞它...但它的工作原理,如果我填寫像這樣:

Parse.User.logIn("[email protected]", "mypassword", {.... 

任何幫助,將不勝感激。

乾杯!

編輯:這是錯誤

XMLHttpRequest failed: {"statusText":"","status":0,"response":"","responseType":"","responseXML":null,"responseText":"","upload":{"ontimeout":null,"onprogress":null,"onloadstart":null,"onloadend":null,"onload":null,"onerror":null,"onabort":null},"withCredentials":false,"readyState":4,"timeout":0,"ontimeout":null,"onprogress":null,"onloadstart":null,"onloadend":null,"onload":null,"onerror":null,"onabort":null} 

難道是一個MAMP問題? PS:創建新的對象等工作正常。

回答

3

由於您在提交事件時不調用preventDefault,會發生什麼情況是當您單擊其中的效果以取消Parse.User正在進行的ajax調用時發佈表單。

Add event.preventDefault();在你的事件處理程序中,你應該沒問題。

<form class="login-form" method="post" onsubmit="tryLogin(this); event.preventDefault();"> 

或者更好的使用jQuery來管理此事件

$(".login-form").submit (function(event) { 
    ... 
    event.preventDefault(); 
}); 
+0

非常感謝您的答覆。這是我解決了兩天......請注意,在解析錯誤響應頁面,同時會的情況下,如果你不使用Danielito的解決方案 – Gorkem