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) {
}
});
发布于 2016-05-12 13:04:00
只有当HTTP不是error
时,才会执行HTTP 200 Ready
函数。您将处理服务器端的错误并返回适当的响应,这将由success
函数在AJAX调用中获取。相反,在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状态的文本部分,如"Not“或"Internal”,到jQuery 1.5时,error
设置可以接受一个函数数组。每个函数将依次调用。注意:这个处理程序不需要跨域脚本和跨域JSONP请求。这是一个Ajax事件。
发布于 2016-05-12 13:09:45
Ajax 错误方法只有当在服务器端得到黄色屏幕错误时才会被击中。在您的场景中,您正在使用try处理错误并返回一个有效的响应。因此,这不是一个错误,而是一个有效的响应。如果要显示来自服务器的实际错误消息,则可以使用success
属性来确定响应是成功还是错误,这类似于Praveen在其答复中已经发布的内容。
success: function(data) {
if (data.success) { //as you are passing true/false from server side.
// Code if success.
} else {
// Code if error.
}
},
https://stackoverflow.com/questions/37187699
复制相似问题