[英]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.