2011-12-07 99 views
1

IM具有以下問題,我有這個帖子的行動,是由AJAX調用:AJAX MVC3 jQuery的AJAX回調總是進入成功

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult AX_Login(LoginVM usersubmitted) 
{ 
    if (ModelState.IsValid) 
    { 
     return Json(new { success = true }); 
    } 
    else 
    { 
     return Json(new { success=false, error = true }); 
    } 
} 

對於另一方面我有一個按鈕的下面jquery的處理程序:

$("#Jquery_LoginButton").click(
     function() { 
     $.ajax({ 
      type: "POST", 
      url: "@(Url.Action("AX_Login","Users"))", 
      data:$("#MiniLoginForm").serialize(), 
      success: function (result) 
      { 
       alert("Good"); 
      }, 
      error: function() 
      { 
       alert("Bad"); 
      } 
     }); 

     } 
    ) 

我的問題:已達到操作,但始終ajax調用以成功結束 - 即使模型無效 - 。

問題:

  • 你知道爲什麼發生這種情況,如果IM設置爲false成功?如果模型無效,我可以拋出異常,但我沒有看到優雅的東西。

  • 如何正常管理Data Annotations和Ajax驗證?

回答

6

由於您的要求 始終工作,您總是得到「成功」是正確的。 $.ajax不知道什麼數據回來。 所以你會得到error只有當您的請求failes(404例)

你必須這樣做

$.ajax({ 
    type: "POST", 
    url: "@(Url.Action("AX_Login","Users"))", 
    data:$("#MiniLoginForm").serialize(), 
    success: function (result) 
    { 
     if (result.success) 
     { 
      alert("Good"); 
     } 
     else 
     { 
      alert("Bad"); 
     } 
    }, 
    error: function() 
    { 
     alert("Request failed"); 
    } 
}); 

希望這有助於

+0

非常感謝。它工作完美。 – Jose3d

+0

完成...只是最後一個問題,你有任何url解釋什麼是現在突出顯示其值無效的文本框的最佳方式?我可以從我的json操作返回錯誤消息,但這是正確的方式嗎?感謝,並有一個愉快的一天。 – Jose3d

+0

你可以做到這一點,但我不知道你想要什麼。你應該閱讀有關驗證。 http://www.asp.net/mvc/tutorials/overview/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript – dknaack