繁体   English   中英

AJAX错误返回为成功

[英]AJAX error is returned as Success

AJAX错误返回为成功。 如何从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) {
                    }
                });

仅当HTTP响应代码不是HTTP 200 Ready时,才会执行error功能。 您在服务器端处理错误并返回正确的响应,该响应将由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.
  }
},

文档中 (向下滚动至error部分):

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

仅当服务器端出现黄屏错误 时,才会打出 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.
  }
},

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM