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