IE7/8 responseText в readyState 3 недоступен

Я написал приложение с торнадо для поддержки обновлений в реальном времени на моем веб-сайте через потоковую передачу HTTP. Он работает во всех браузерах, кроме IE7 и IE8. Вот код, который обрабатывает потоковую передачу HTTP:

... code to create xhr object
xhr.open('GET', 'http://192.168.0.173:8888', true);
xhr.onreadystatechange = function() {
        if(xhr.readyState == 3 && xhr.status==200) {
        try {
            alert(xhr.responseText);
        } catch(e) {
            alert("noo");
        }
    }
}
setTimeout("xhr.send(null);", 1000);

Проблема в том, что xhr.responseText недоступен, когда readyState равен 3. После нескольких часов работы в Google я узнал о IXMLHTTPRequest.responseStream. Я пытался использовать

xhr = new ActiveXObject("MSXML2.XMLHTTP.3.0");

но с тем же результатом. Запрос отправляется на сервер, и readyState равен 3, но xhr.responseStream недоступен.

Есть идеи? Или я должен вернуться к долгим опросам, когда я обнаружу IE?

Спасибо

Генри

1 ответ

Решение

Если вы снова прочитаете свою связанную страницу;

Для сравнения, версия Microsoft XML (MSXML) интерфейса IXMLHTTPRequest предоставляет частичные результаты через свойство responseStream, которое не реализована в собственной версии Windows Internet Explorer. Имейте в виду, что это поведение также отличается от интерфейса IServerXMLHTTPRequest, который предоставляет частичные результаты для responseBody и responseText.

Это, я думаю, один излишне сложный способ сказать, что эта вещь существует, но мы этого не делаем. Бесполезный IE. Мне просто нужно было реализовать то же самое и в итоге просто вернуться к долгому опросу IE.

Фонд Dojo использует Cometd, используя Bayeux. Но я считаю, что только Jetty в настоящее время реализует протокол Bayeux.

Итак, в заключение, IE, DIAF.

Другие вопросы по тегам