AJAX пост обновить страницу на неправильный запрос - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть пост 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 голосов
/ 08 сентября 2018

Вы можете просто установить тайм-аут для обновления страницы, например:

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

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

Или я не правильно понял вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...