2012-02-07 58 views
0

我必須丟失一些明顯的東西...如何防止「返回false」;在與ASP.NET MVC衝突的AjaxSubmit RedirectToAction

我有一個標準的ASP.NET MVC3登錄操作,正常工作。如果用戶/密碼匹配,則FormsAuthentication執行其SetCookie例程並按預期執行RedirecToAction,否則返回設置模型狀態錯誤並將模型返回到視圖。所以這適用於Javascript禁用。

我現在試圖添加jQuery.Form插件來做一個ajaxSubmit,如果用戶不使用匹配的用戶/密碼組合顯示錯誤。

$(document).ready(function() { 
     var options = { 
      success: showResponse 
     }; 

     $('#formLogon').submit(function() { 
      $(this).ajaxSubmit(options); 
      // return false; 
     }); 

     function showResponse() { 
      $("#loginError").show();        
     } 
    }); 

我的問題是,如果我取消註釋「返回false」;在調用showResponse函數後,ajaxSubmit錯誤div正確顯示。但是,如果提交了正確的用戶名/密碼,用戶將不會被重定向,因爲重定向被攔截(但我已經看到了Fiddler中的GET調用,所以我知道重定向正在發出請求)。

我試着移動「返回false」;到showResponse函數,但它不起作用,沒有返回false之後,ajaxSubmit MVC重定向踢在回調之前,並且從不顯示錯誤div。

這是不是我正在嘗試做的正確實施?

回答

0

您應該嘗試查看jQuery的$ .ajax函數。有了這個功能,你可以定義一個回調。

應該發生什麼是以下 在提交時總是返回false 當用戶輸入登錄時發出ajax請求。 如果用戶輸入正確的登錄名,請刪除提交功能並使用$(this).submit提交。 (使用$ .ajax的回調) 然後將返回假回。

這是一個骯髒的修復程序,但我認爲它會工作

+0

對不起,我不是很遵循你的事件序列。如果我已經提交了一次並檢查了密碼,爲什麼還要再次提交表單?而且我不太清楚你的意思是「把回報放回去」。 – user1194094 2012-02-08 03:32:50

+0

那麼你試圖做到這一點(真的)只有當登錄是正確的提交表單。當您嘗試登錄時,您將提交函數返回false。這使得表單只會對服務器執行ajax調用,並且不會因爲返回false而提交。如果你使用$ .ajax,你可以定義一個回調函數。在這個回調函數中,你可以檢查登錄是否正確。如果不是,您可以顯示錯誤,如果它是正確的,您可以從登錄表單的提交功能中刪除返回false。然後你讓表單提交。 – 2012-02-08 08:32:58

相關問題