Помогите подружить AJAX с Opera

Bu-Bu

Любитель PHP
Помогите подружить AJAX с Opera

Написал коротенький сценарий с XMLHttpRequest. Разбил на 2 процедуры validate и update
Вся процедура стандартная, опишу только вывод:

конец функции - response (текст, полученный из XMLHttpRequest - все окей, проверенно)

myDiv = document.getElementById("myDive");
myDiv.InnerHTML = response;

Далее, когда все validate = ok, вызывается опять функция

update(); (для получения нового экрана формы)

и все - Опера 8.5 жестко виснет, т.е. ничего не отдает в броузер.
хотя ошибок 0. IE отрабатывает ситуацию на 5.

В другом скрипте эти же функции обрабатывают другую ситуацию, так Opera вываливает кучу ошибок в броузер и ругается уже на PHP-файл, в котором вообще ошибок отродясь не было.

Как обмануть Оперу?
 

kruglov

Новичок
1. Что-то древняя опера.
2. и на каком этапе "все виснет"?
 

Bu-Bu

Любитель PHP
Только такая была на компе.

Виснет именно при обращении снова к процедуре изменения страницы, т.е. там должен загружаться новый контент. Причем первый экран процедурой update() загружается нормально
(все те же myDiv = document.getElementById("myDive"); myDiv.InnerHTML = response;)
а при повторном обращении к этой же update()
 

Bu-Bu

Любитель PHP
Автор оригинала: A1x
вообще то правильно не InnerHTML а іnnerHTML
Да innerHTML и пишу - научен уже. Просто где-то вычитал, что Опера не позволяет перезагружать элементы DOM а решения своей задачи нигде не нашел.
 

Bu-Bu

Любитель PHP
Позволю себе подытожить тему, т.к. вопрос снял самостоятельно и наковырялся с ним на год вперед.
Вывод 1. Если какая-то операция в AJAX встает в Опере при отсутствии ошибок, то не парьтесь - ответ найти практически нереально. Я сделал просто - вместо вызова функции обновления экрана из другой функции я ввсе перевел для Оперы к такому виду:
if (window.opera)
{
window.location = 'javascript:update();
}
Сразу все заработало.
Вывод 2. Если вы планируете поддержку скрипта в Опере и не хотите отказываться от win-1251, то во-первых, не стоит делать переформат отправляемых AJAX данных с помощью функций Javascript - Опера их ломает так, что потом не раскодируете вообще. IE обходится вообще без обработки запроса и ответа чем-либо (в случае, если responseText). Вообще, у меня сложилось стойкое впечатление, что Опера - худший браузер для Ajax, потому что ругается даже на таких монстров, как библиотека Ext. А самый "плохой" ослик ругался у меня только если я болел на голову по-серьезному.
Вывод 3. responseText элементарно вытягивает с сервера километры html без единой ошибки, поэтому во многих случаях не стоит городить xml для какой-то примитивной формы - кода и обработки будет море - толку чуть!
Вывод 4. JS - все-таки слишком замороченная фигня, чтобы пользовать ее то тут, то там. На отладку пыха у меня уходят минуты, а на JS - сутки - это по крайней мере нелепо при такой неразберихе в объектных моделях браузеров. И я выражаю респект людям, занимающимся кодингом на JS не за их "мудрость" (толком так никто и не подсказал ничего ни на одном форуме), а за то, что им хватает терпения городить сайты сплошь на JS, которые кстати в большинстве случаев работают криво. В заключении не могу не упомянуть библиотечку, которую я с удовольствием прикрутил, чтобы не ковыряться в коде JS - PHP.js. Очень полезная штука, реализующая PHP-функции на JS.
 
Сверху