| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > AJAX и readyState=3 (проблема в IE) |
| Автор: InvalidProperty 1.11.2007, 11:33 | ||||||
| уже 5 часов лажу по форумам, ничего конкретного найти не могу, за исключением http://forum.vingrad.ru/forum/topic-150096/unread-1/hl/ajax/index.html, но и это, к сожалению, не подошло, а, может быть, я сам что-то неправильно делаю. Для начала предоставлю исходный код JS:
Серверный код может быть абсолютно любым, например, на PHP:
Таким образом, на выходе мы должны получить state 1 через 5 секунд state 1 state 2 еще через 5 секунд state 1 state 2 state 3 Mozilla firefox и konqueror выдают именно то, что нужно, а вот IE говорит (цитирую) данные, необходимые для завершения этой операции, еще недоступны Я уже запарился искать в чем может быть проблема, хотя, скорее всего, она в кеширование IE, но что делать? Я пробовал изменить JS функцию getIndexReadyState() следующим образом:
FFx и konqueror также делают все так, как нужно, т.е. каждые 5 секунд вываливают обновленные данные, а вот IE в этом случае ошибки не выдает, но вываливает данные, только когда readyState = 4, т.е. в самом конце отдает целиком всю строку state 1 state 2 state 3 В чем может заключаться проблема? |
| Автор: InvalidProperty 1.11.2007, 17:03 | ||||
немного разобрался с работой AJAX, хотя и не так, как хотелось. Вот рабочий код Javascript
а вот это крутится на стороне сервера:
но, все-таки, я так и не разобрался как получить из IE частичные данные, ибо этот вариант будет сильнее тормозить сервер. Если у кого-нибудь есть какие-либо мысли, буду очень признателен их выслушать |
| Автор: Avb 1.11.2007, 18:11 |
| Поддержка всех ready state-ов не гарантируется во всех браузерах |
| Автор: InvalidProperty 2.11.2007, 09:33 |
| ну, это понятно, что не гарантируется, но почему тогда IE видит readyState=3, т.е. он может сказать, что вот в этот момент readyState равен 3, но данные отобразить не может. Тогда следующий вопрос, по поводу утечек памяти браузеров, связанные с javascript. Каким образом можно догадаться, что из-за конкретного скрипта будет происходить утечка памяти? т.е. меня интересует, к примеру, создание объектов в скрипте: xmlHttp = new XMLHttpRequest(); в этом случае браузер должен зарезервировать память, а когда он ее освободит? Или же в случае с переменными: где они создаются, на стеке или в куче, и как они уничтожаются. Еще интересует следующая конструкция: setTimeout("some_function();", 500); В этом случае тоже резервируется память. Но как она очищается? |
| Автор: InvalidProperty 5.11.2007, 02:35 | ||
| всем спасибо за внимание исчо рас продублирую, ибо я потерял достаточно времени, чтобы локализовать проблему, будем надеяться, что после меня народ будет находить ответ на этот вопрос быстрее:
ЗЫ Кстати, вопрос по поводу резервирования/очистки памяти javascript браузерами остается открытым. В манах говорится, что если объявлять переменную явным образом: var a; то в этом случае ее удаление не требуется, в отличие от неявного объявления: a = 5; В случае неявного объявления можно удалить переменную или объект или его свойство при помощи оператора delete, тогда не совсем понятно что будет, если не удалять... т.е. будет ли браузер по завершению обработки скрипта освобождать память? И как происходить освобождение памяти в случае с явным объявлением? |