【问题标题】:AJAX MVC3 jquery ajax call back always enters on successAJAX MVC3 jquery ajax回调总是成功进入
【发布时间】:2011-12-07 08:24:25
【问题描述】:

我有以下问题,我有这个由 ajax 调用的 post 操作:

[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 调用总是在成功时结束 - 即使模型无效 - 也是如此。

问题:

  • 如果将成功设置为 false,您知道为什么会发生这种情况吗?如果模型无效,我可以抛出异常,但我看不出它很优雅。

  • 您如何正常管理使用数据注释和 Ajax 的验证?

【问题讨论】:

    标签: jquery asp.net-mvc-3 data-annotations


    【解决方案1】:

    你总是得到“成功”是对的,因为你的请求 总是工作。 $.ajax 不知道返回了什么数据。 因此,只有当您的请求失败(例如 404)时,您才会得到 error

    你必须这样做

    $.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");
        }
    });
    

    希望这会有所帮助

    【讨论】:

    • 完成...最后一个问题,您是否有任何网址可以解释现在突出显示其值无效的文本框的最佳方法是什么?我可以从我的 json 操作返回错误消息,但这是正确的方法吗?谢谢,祝您有愉快的一天。
    • 你可以这样做,但我不知道你到底想要什么。您应该阅读有关验证的信息。 asp.net/mvc/tutorials/overview/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2012-05-04
    • 1970-01-01
    • 2013-01-23
    • 2011-08-05
    相关资源
    最近更新 更多