2014-01-09 38 views
0

我正在使用jquery打彈簧控制器,並在登錄頁面上根據控制器響應顯示消息給最終用戶。在這裏,我只考慮登錄失敗。我想向用戶顯示登錄失敗的消息。我寫了一些Ajax代碼。jquery無法在fire狐狸中表現得很好

奇怪的是,這個ajax代碼對於crome瀏覽器來說工作正常,但在fire fox的情況下會失敗。任何機構都可以告訴我我有什麼要實現相同的功能。所以它成爲瀏覽器獨立。

Ajax代碼是在這裏

<script type="text/javascript"> 
function doAjaxPost() { 
     // get the form values 
     $.ajax({ 
     type: "POST", 
     url: $("#login-form").attr("action"), 
     success: function(response){ 
      $('#sign-up').html(response); 
     }, 
     error: function(e){ 
      alert('Error: ' + e); 
     } 
     }); 
     event.preventDefault(); 
    } 
</script> 

春天控制器代碼是在這裏:

@RequestMapping(value = "/sign-in", method = RequestMethod.POST) 
    public @ResponseBody String submitCustSignInForm(@ModelAttribute("model") Person model, 
      HttpSession sess) { 

     String response = ""; 
     Person person = null; 
     if (sess.getAttribute("USER_INFO") == null) { 

      person = tsService.login(model); 
      if (person == null) { 
       response = "User name or password does not match."; 
      } else { 
       response = "success"; 
       sess.setAttribute("USER_INFO", person); 
      } 
     } 
     return response; 
    } 

在這兩種情況下,阿賈克斯查詢命中控制器,但是在克羅姆的情況下,保持在同一頁面,並顯示錯誤信息。但在Firefox的情況下,它移動到另一個空白頁面,然後打印消息。

我在想什麼可能是在firefox case「event.preventDefault();」不能停止形式

HTML表單的作用是在這裏:

<form class="aui login-form" 
    method="post" id="login-form" onsubmit="doAjaxPost()"> 
</form> 

表單代碼是長一點,以便不給整個代碼。

回答

0

你在用一個香草html onsubmit()來混合一個jQuery風格的表單提交處理程序。嘗試改變:

event.preventDefault(); 

return false; 

或者,也可以在表單標籤取下的onsubmit,偵聽器綁定到表單提交事件,並使用event.preventDefault()。

+0

感謝您的快速回復。 –

相關問題