1

我正在研究 asp mvc,其中我有 jquery 数据表和一些图表元素,我正在通过 ajax 调用获取所有项目。

现在,如果任何 ajax(数据表 json 数据和图表图像)调用遇到异常,我需要重定向用户。现在我正在使用数据表的错误回调,它为我提供了发生异常时生成的所需 html,但同时与数据表一起,我向控制器发送了 7 个 jquery 调用,其输出取决于数据表的结果,所以这 7 个调用陷阱在无限循环中。现在,如果我的数据表的函数遇到错误,我该如何在服务器端停止此处理。

提前致谢。

4

3 回答 3

4

处理您的 jQuery Ajax 的错误事件并在该函数中做任何您想做的事情。

$.ajax(
      {
          success: function (result) {

              });
          },
          error: function (x, e) {
           //Write you code here
              alert(x.readyState + " " + x.status + " " + e.msg);
          }
      });
于 2012-06-12T14:19:20.207 回答
1

我在我的 MVC3 项目中使用了一个 aspx 页面,如下所示:

<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx">
</customErrors>

希望这可以帮助

于 2012-06-12T13:56:18.440 回答
1

AJAX 错误处理中,您应该始终关注双方:服务器端和客户端。你需要决定每一方会发生什么。

Kapil Khandelwal回答很棒,但它只涵盖客户端。

我还鼓励您阅读此 Q/A:ASP.NET MVC Ajax 错误处理

定义一个通用或特定的错误处理程序并装饰返回 JsonResult 或响应任何类型的 AJAX 调用的方法总是有用的。就像是:

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;
        }
    }
}

然后你像这样使用它:

[JsonErrorHandler]
public JsonResult GetMyData(...)
{
    .
    .
    .
}
于 2012-06-20T21:40:26.713 回答