2011-12-07 43 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