Почему этот вызов jQuery Ajax не работает ТОЛЬКО в IE9 (даже отлично работает в IE8 и IE7)

У меня есть веб-сайт, на котором я выполняю вызов ajax следующим образом:

            // perform an ajax request to generate a new subscriber account
            jQuery.ajax({
                type: 'POST',
                url: '/index.php?option=com_content&view=article&id=45&tmpl=component',
                data: postVars,
                success: handleResponse,
                error: function(jqXHR, textStatus, errorThrown) {
                    alert ('response: ' + jqXHR.responseText);
                    alert ('code: ' + jqXHR.getResponseHeader('X-Subscriber-Status'));
                }
            });

Запрошенная страница ничего не делает, кроме как возвращает однозначный код состояния и он отлично работает со всеми браузерами, кроме IE9. Сценарий размещается в том же домене, что и запрашиваемая страница, поэтому проблем с кросс-доменным скриптингом быть не должно.

Я наконец отследил, что происходит, но не знаю, как это исправить. Оказалось, что запрос Ajax успешно завершается без проблем. Я проверил это, используя Fiddler для просмотра сетевого трафика. Сервер отвечает на запрос кодом состояния HTTP 200, а тело не отвечает. t содержат что-либо, кроме однозначного кода ответа. На этом этапе jQuery выполняет обработчик ошибок, а НЕ обработчик успеха s можно было бы ожидать (в IE9). Почему это происходит и как это предотвратить? Это происходит ТОЛЬКО в IE9. Даже IE8 и IE7 прекрасно работают с одним и тем же кодом! Как видите, я наконец прибег к обнаружению IE9 и использованию для этого объекта XmlHttpRequest (который, кстати, отлично работает).

Мне это кажется ошибкой jQuery, но я не могу найти упоминания об этом в мои поиски. Неужели я единственный, кто испытывает такое странное поведение?

10
задан rushinge 2 August 2011 в 15:07
поделиться