У меня есть веб-сайт, на котором я выполняю 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, и тело не содержит ничего, кроме кода ответа из одной цифры.В этот момент jQuery выполняет обработчик ошибок, а НЕ обработчик успеха, как и следовало ожидать (в IE9).Почему это происходит и как я могу предотвратить это?Это происходит ТОЛЬКО в IE9.Даже IE8 и IE7 прекрасно работают с одним и тем же кодом!Как вы можете видеть, я наконец-то прибег к обнаружению IE9 и использованию для этого объекта XmlHttpRequest (который, кстати, прекрасно работает).
Мне кажется, что это ошибка jQuery, но я не могу найти упоминанияоб этом в моих поисках.Я действительно единственный, кто испытывает это странное поведение?