Ajax发布错误请求后刷新页面

时间:2018-09-07 20:45:41

标签: javascript c# jquery ajax asp.net-mvc-5

我有一个像这样的ajax帖子:

$.ajax({
    type: "post",
    dataType: "html",
    url: "/MyController/MyAction",
    data: AddAntiForgeryToken({
        SomeValue: "Abc"
    }, "#FormIdFromWhereToCopyAntiForgeryTokenFrom"),
    success: function (response) {
        if (response === "True") {
            //do something
        } else {
            //call the function to try again in 10 seconds.
        }
    },
    error: function (e) {
        //call the function to try again in 10 seconds.
    }
});

现在在某些情况下,此函数可能会返回错误,这是非常罕见的情况,但有可能,我想对其进行处理。出于这个问题的目的,我认为深入研究它们并不重要。无论如何,在我的服务器端,我会检查这种情况下是否发生错误。我捕获了它,然后返回一个通常告诉浏览器刷新自身的响应。但是由于这是一个ajax调用,所以不会这样做。这是该代码:

public class CustomExceptionHandler : HandleErrorAttribute
{
    public override void OnException(ExceptionContext filterContext)
    {
        var exception = filterContext.Exception;
        if (exception != null)
        {
            var exceptionType = exception.GetType();
            var someType= typeof(SomeExceptionType);

            if (exceptionType.IsInstanceOfType(someType) || someType == exceptionType)
            {
                filterContext.ExceptionHandled = true;
                filterContext.Result = new RedirectResult(filterContext.HttpContext.Request.RawUrl);
                return;
            }
        }
    }
}

正如您在上面看到的那样,其目的是告诉页面刷新自身,之后问题将得到解决。但是,我不确定如何在错误部分中检入我的JavaScript,即服务器已发送回重定向结果,因此我可以告诉浏览器进行刷新。

我要查看标题还是其他内容?您能举个例子来解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以简单地设置超时以刷新页面,如下所示:

else {
    //call the function to try again in 10 seconds.

    settimeout(function(){
       location.reload();
    }, 10000);
}

还是我误解了这个问题?