How to redirect user to custom error page when any of asynchronous call encouter exception
我正在使用asp mvc,其中我有jquery数据表和一些图表元素,我通过ajax调用获取所有项目。
现在我需要重定向用户,如果任何ajax(数据表json数据和图像图表)调用遇到异常。
现在我正在使用datatable的错误回调,它给我在发生异常时生成所需的html,但同时与datatable一起发送7个jquery调用,其输出依赖于datatable的结果,所以这7个调用陷阱 在无限循环中。 现在如果我的datatble函数遇到错误,我该如何在服务器端停止这个处理。
提前致谢。
处理你的jQuery Ajax的错误事件并做你想做的任何功能。
1 2 3 4 5 6 7 8 9 10 11 | $.ajax( { success: function (result) { }); }, error: function (x, e) { //Write you code here alert(x.readyState +"" + x.status +"" + e.msg); } }); |
在AJAX错误处理中,您应该始终关注双方:服务器端和客户端。 你需要决定每一方面会发生什么。
Kapil Khandelwal的答案很棒,但它只涵盖了客户方面。
我还鼓励您阅读此Q / A:ASP.NET MVC Ajax错误处理
定义一个通用或特定的错误处理程序并装饰返回JsonResult或响应任何类型的AJAX调用的方法总是很有用的。 就像是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class JsonErrorHandler : ActionFilterAttribute { public override void OnActionExecuted(ActionExecutedContext filterContext) { if (filterContext.HttpContext.Request.IsAjaxRequest() && filterContext.Exception != null) { // Log the Error // Do necessary things... filterContext.HttpContext.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; filterContext.Result = new JsonResult() { //JsonRequestBehavior = JsonRequestBehavior.AllowGet, Data = new { filterContext.Exception.Message, filterContext.Exception.StackTrace } }; filterContext.ExceptionHandled = true; } } } |
然后你使用它像:
1 2 3 4 5 6 7 | [JsonErrorHandler] public JsonResult GetMyData(...) { . . . } |
我在我的MVC3项目中使用aspx页面做到了:
1 2 | <customErrors mode="RemoteOnly" defaultRedirect="Error.aspx"> </customErrors> |
希望这可以帮助