Как передать что-то в Ajax.Complete JQuery - PullRequest
0 голосов
/ 09 ноября 2009

У меня проблема с тем, что на моих сайтах используется много AJAX, и когда время ожидания пользователя все равно остается на моей странице. Теперь, скажем, пользователь уходит на 10 минут (время ожидания установлено 10 минут), теперь у пользователя истекло время ожидания, но он все еще на странице.

Таким образом, они могли сделать запрос «сохранить», но теперь все мои методы действия, которые отправляются в ajax-запросах, имеют надписью тег авторизации asp.net mvc. Если пользователь не проходит эту аутентификацию, его следует перенаправить на «страницу входа», но, поскольку это ajax-запрос, он не будет отправлен на «страницу входа», ничего не произойдет.

Так что я подумал, может быть, я мог бы как-то передать что-то обратно (может быть, если они все еще аутентифицированы) обратно в ajax.Complete, и если это "false", тогда выполнить перенаправление из javascript.

Однако я не знаю, как это сделать. Я не знаю, как передать что-то обратно, как написать метод моего контроллера.

Ответы [ 2 ]

1 голос
/ 09 ноября 2009

Если MVC выдает 401 Unathorized ответ, то должен быть вызван обратный вызов сбоя для вызова jQuery ajax и предоставить вам объект XmlHttpRequest. Вы можете проверить XmlHttpRequest в качестве кода состояния 401 XmlHttpRequest.status == 401, а затем изменить местоположение страницы с помощью своего скрипта на логин, даже предоставив сообщение, если хотите. Независимо от того, генерирует ли он 401, любой код состояния неуспешного вызова должен вызывать обратный вызов сбоя запроса ajax, и вы должны иметь возможность обрабатывать вашу ситуацию в наборе методов для обработки сбоев.

Что-то вроде приведенного ниже обобщенного кода может обработать ваши ошибки.

function(xhr, errorText, ex){
    if(xhr.status == 401) { 
        //.. alert user and redirect to login ..
        document.location = 'myloginpage.html';
    }
    ...
}
0 голосов
/ 09 ноября 2009

Простой способ может состоять в том, чтобы просто перенаправить страницу после истечения времени ожидания на страницу выхода / входа. Большинство сайтов с такими тайм-аутами в первую очередь предупредит вас. Если вы нажмете «ОК», ваш таймаут будет сброшен. Если вы нажмете «Отмена» или просто выйдете, страница будет отключена, вы выйдете из системы и будете перенаправлены на другую страницу.

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