AJAX错误作为Success返回

时间:2016-05-12 13:00:08

标签: javascript jquery ajax asp.net-mvc

AJAX错误作为Success返回。如何从ASP.NET MVC返回JSON错误?你能告诉我我做错了什么吗?谢谢。

[HttpPost]
    public JsonResult Register(int EventID)
    {
        try
        {
            // code
            return Json(new { success = true, message = "Thank you for registering!" });
        }
        catch (Exception ex)
        {
            return Json(new { success = false, message = ex.Message });
        }
    }


                $.ajax({
                    url: "@Url.Action("Register", "Home")",
                    type: "post",
                    dataType: "json",
                    contentType: "application/json",
                    data: JSON.stringify(postData),
                    success: function(data) {
                    },
                    error: function (data) {
                    }
                });

2 个答案:

答案 0 :(得分:2)

仅当HTTP响应代码不是error时才会执行HTTP 200 Ready函数。您在服务器端处理错误并返回正确的响应,这将由AJAX调用中的success函数获取。相反,在JSON中使用status变量并在客户端处理它:

success: function(data) {
  if (typeof data == "string")
    data = JSON.parse(data);
  if (data.success) {
    // Code if success.
  } else {
    // Code if error.
  }
},

docs(向下滚动到error部分):

  

请求失败时要调用的函数。该函数接收三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数(null除外)的可能值为"timeout""error""abort""parsererror"。发生HTTP错误时,errorThrown会收到HTTP状态的文本部分,例如“未找到”或“内部服务器错误”。 从jQuery 1.5 开始,error设置可以接受一系列函数。每个函数将依次调用。 注意: 不会为跨域脚本和跨域JSONP请求调用此处理程序。这是Ajax Event

答案 1 :(得分:2)

仅当在服务器端出现黄色屏幕错误时才会出现Ajax 错误方法。在您的方案中,您使用try catch处理错误并返回有效响应。因此,这不被视为错误,而是有效的响应。 删除try catch 以便Ajax将选择错误事件,否则如果要显示来自服务器的实际错误消息,则可以使用success属性来决定是否答案是成功或错误,它与Praveen在答案中已经发布的内容类似。

success: function(data) { 
  if (data.success) {  //as you are passing true/false from server side.
    // Code if success.
  } else {
    // Code if error.
  }
},