Почему моя страница не перенаправляет, даже если она не выдает ошибку? - PullRequest
0 голосов
/ 03 марта 2009

У меня есть эта функция, которая использует функцию публикации jQuery для отправки ajax-запроса моему обработчику выхода из системы, который уничтожает сеанс (установленный asp.net) и перенаправляет на страницу входа:

<script type="text/javascript">
    //<![CDATA[
    function doLogout() {
        var conf = false;
        conf = confirm("Really log out?");
        if (conf === true) {
            $.post("logout.ashx");
        }
    }
    //]]>
</script>

Пока что ссылка на выход из системы работает нормально: пользователь щелкает ее, появляется окно подтверждения, и если он нажимает «да», он загружает обработчик выхода:

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    With context
        If .Session IsNot Nothing Then
            context.Session.Clear()
            context.Session.Abandon()
        End If
        .Server.Transfer("default.aspx", False)
    End With
End Sub

Я тоже пытался использовать Response.Redirect, ничего не происходит.

Я проверил, отслеживая, что все работает нормально. Там нет никаких ошибок JavaScript или asp.net. Единственная проблема - страница в браузере не меняется.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 03 марта 2009

Когда вы публикуете ajax-запрос, вы можете перенаправлять на сервер все, что вам нужно, но все, что вы делаете, - это определяете, какая страница в конечном итоге отвечает на этот ajax-запрос. Если вы хотите перенаправить всю страницу, вам нужно отправить сообщение со всей страницы или создать javascript, который обрабатывает ответ, чтобы знать, когда вы хотите перенаправить, и делать это там.

0 голосов
/ 03 марта 2009

Проблема в том, что обратный вызов на сервер является асинхронным вызовом JavaScript, а не обратным вызовом страницы. если вы хотите изменить страницу в браузере, вам также придется сделать это в функции javascript после вызова функции выхода из системы.

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