Метод JQuery AjaxComplete, удаляющий пользовательские заголовки? - PullRequest
2 голосов
/ 15 января 2012

Я пытаюсь следовать варианту № 3 в решении на этом посте SO: Действие контроллера, которое возвращает частичное представление, вставляет страницу входа при неудачной авторизации

У меня проблема с чтением моего пользовательского заголовка в методе ajaxComplete в jquery.

Я подтвердил в fiddler и в инструментах отладки chrome, что пользовательский заголовок фактически возвращается и принимается браузером ...

Заголовки ответа (в Fiddler):

Server: ASP.NET Development Server/10.0.0.0
Date: Sun, 15 Jan 2012 04:00:13 GMT
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 3.0
Unauthorized: 1
Cache-Control: private
Content-Length: 0
Connection: Close

Заголовки ответа (полученные Chrome):

Cache-Control:private
Connection:Close
Content-Length:0
Date:Sun, 15 Jan 2012 04:12:13 GMT
Server:ASP.NET Development Server/10.0.0.0
Unauthorized:1
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0

Заголовки ответа (как было найдено при вызове getAllResponseHeaders () для переменной xmlHttpRequest, переданной в ajaxComplete):

Date: Sun, 15 Jan 2012 04:42:21 GMT
X-AspNet-Version: 4.0.30319
Connection: Close
Content-Length: 65
X-AspNetMvc-Version: 3.0
Server: ASP.NET Development Server/10.0.0.0
Content-Type: application/json; charset=utf-8
Cache-Control: private

Интересно, что функция, которая вызывается при возврате исходного запроса ajax (как инициировано jquery), действительно получает заголовок Unauthorized.

Кто-нибудь знает, что здесь происходит и что я могу сделать, чтобы решить эту проблему?

Вот мой javascript-код «ajaxComplete»

$(document).ajaxComplete(function (event, request, settings) {
        alert(request.getResponseHeader('Unauthorized'));
    });

Ответы [ 2 ]

1 голос
/ 15 января 2012

Вы можете посмотреть здесь .Это может быть полезно, если вы используете тот же плагин (ajaxmanager) на своей странице.Если нет, проверьте другие плагины.

0 голосов
/ 15 января 2012

Первоначальный ответ Vucetica заставил меня задуматься, и я провел последний час, просматривая код jquery. У меня есть мой собственный заголовок, возвращающийся сейчас. Похоже, проблема возникла из-за необработанного исключения в моем коде при успешном обратном вызове исходного запроса ajax.

Определенно что-то, что я должен исправить, но кажется странным, что jquery позволил бы себе быть восприимчивым к этому таким образом, что он молча терпит неудачу и влияет только на пользовательские заголовки. Это неожиданное поведение на самом деле привело меня в неправильном направлении.

В любом случае, спасибо всем за помощь.

Для полноты вот мой код до и после.

До (пользовательские заголовки не получены в методе ajaxComplete)

$.ajax({
    type: "GET",
    url: "/Game/GetPlay/27?roundId=" + that.gameState.RoundToDisplay,
    contentType: "application/json; charset=utf-8",
    data: {},
    dataType: "json",
    success: function (play, request, settings) {
        that.play = play;
        that.startGame();
    },
    error: null,
    cache: false
});

После (работа)

$.ajax({
    type: "GET",
    url: "/Game/GetPlay/27?roundId=" + that.gameState.RoundToDisplay,
    contentType: "application/json; charset=utf-8",
    data: {},
    dataType: "json",
    success: function (play, request, settings) {
        that.play = play;
        try {
            that.startGame();
        } catch(err){

        }
    },
    error: null,
    cache: false
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...