XMLHttpRequest

Юля

Новичок
XMLHttpRequest

У меня проблема с XMLHttpRequest из под FireFox
Он подгружает не все данные, хотя если обращаться напрямую к XML файлу, все ок.
В IE так все работает хорошо, все данные подгружает.

Как заставить FireFox выводить все данные полностью, подскажите пожалуйста.
Благодарю!
 

Yaponchick

Новичок
Код:
  if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    request.onreadystatechange = processRequestChange;
    request.open("GET", url, true);
    request.send(null);
  } else if (window.ActiveXObject) {
    request = new ActiveXObject("Microsoft.XMLHTTP");
    if (request) {
      request.onreadystatechange = processRequestChange;
      request.open("GET", url, true);
      request.send();
    }
  }
Это проверка браузера. У меня всё ок ;-) Но код не мой =)
 

Юля

Новичок
Это учтено разумеется.
Суть в том что FireFox не может дождаться загрузки ВСЕХ данных, и выдает их на экран "когда как".

Если данных мало (пара цифр и пара фраз) - все ок!
Но когда данных Килобайт 20-50-100 - тут то проблема и проявляется.

Вот как заставить его принять данные полностью, я не знаю...
Может кто нибудь сталкивался с подобным явлением?
 

White Rabbit

белый кролик
Не сильно знаком со спецификой работы XMLHttpRequest,
но насколько я себе представляю, там суть в том, что из XML достаются данные, после чего они помещаются в элементы страницы. Если я прав (в чем я не уверен;) ), то может быть можно сначало достать всё, что нужно, а потом изменять элементы?
 

Юля

Новичок
Так вообще то так и делается. Однако из под FireFox процедура не дожидается полной загрузки данных, о чем я уже написала выше.
 

CE

Новичок
думаю проблема в этом:
function usrDefinedResponse()
{
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// тока теперь все загружено
}
}
}

а вообще, лучше использовать xajax, prototype.js или еще что-либо готовое

ЗюЫю У меня у самого FireFox
 

Юля

Новичок
Автор оригинала: CE
думаю проблема в этом:
function usrDefinedResponse()
{
if (http_request.readyState == 4) {
if (http_request.status == 200) {
// тока теперь все загружено
}
}
}

а вообще, лучше использовать xajax, prototype.js или еще что-либо готовое

ЗюЫю У меня у самого FireFox
Это все уже "пройдено". Это все конечно есть.
Вы пробовали с данным кодом загружать большие (например >50 Кб) XML файлы?

У меня недозагружается.

По поводу ajax - думаю, если не решу проблему, придется его использовать. А вообще то уж больно интересно что это все таки за ошибка.
 

CE

Новичок
Ок!

Тока что в FireFox загружал файл test.xml размером 167923 b.
Подумав секунды 4 браузер выкинул:
"..Эээ! Походу я завис.. Может остановим исполнение скрипта?"
На что я ответил "Продолжай!" и тут же он мне отобразил весь контент запроса.
Мне кажется, что есть опция типа TimeRequest. Идея думаю понятна. Дальше ковыряться не стал - сам на работе сижу =)

Еще: Пробовал натравлять на большие HTML страницы - не загружал тока в том случае, когда домен запрашиваемой отличается от домена-родителя крипта. Но это в манах описанно.
 

Юля

Новичок
Вобщем разобралась. Все оказалось очень просто.

Напишу, т.к. думаю что людям будет полезно узнать (в поиске найти).

Максимум подгружается до 4096 символов в одном XML контейнере.
Так что придется делать в цикле несколько XML контейнеров, их в цикле складывать в переменную, а уж потом выводить.

Вот и все.
 

flash-vkv

Новичок
посмею предположить что скрипт на сервере неправельно в шапке указывает размер документа
 

Юля

Новичок
Заголовки вообще не причем.

Циклом работает все в порядке.
Данная проблема наблюдалась и на сайте с примером по использованию XMLHttpRequest. В ИЕ все хорошо, в файрфоксе не весь текст загружался.

Видимо у файрфокса глюк.

Вопрос закрыт.
 

flash-vkv

Новичок
хорошо ты его закрытла "у ослика глюк и все на этом"
я таких проблем не наблдал у FF
а почему ты уверена что в шапке дкумента все делом
можеш привести код пхп
 

Юля

Новичок
Автор оригинала: flash-vkv
хорошо ты его закрытла "у ослика глюк и все на этом"
я таких проблем не наблдал у FF
а почему ты уверена что в шапке дкумента все делом
можеш привести код пхп
PHP:
<?
header('Content-Type: text/xml');

echo '<?xml version="1.0" encoding="windows-1251" standalone="yes"?>';
?>
<response>
  <velem>
      spanid
  </velem>
  <vresult>
      123123 (120 KB)
 </vresult>
</response>
Причем тут шапка!!
Документ грузится нормально.
Просто в одном контейнере (<vresult></vresult>) почему то больше 4096 символов через XMLhttp запрос не проходит.

Если циклом выводить (несколько раз по 4096 символов) все ок.
Что тут непонятного то.
Ну попробуйте у себя.
Что интересно у вас получится...
 
Сверху