| imho.ws |
![]() |
|
|
|
# 1 |
|
Advanced Member
Регистрация: 12.05.2004
Пол: Male
Сообщения: 482
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ajax в Opera, не проходит запрос
В общем ситуация сложная (или я уже настолько запутался), попытаюсь объяснить:
есть две функции посылки запросов на сервер и соответственно 2 обработчика, необходимо при некотором условии вызывать 2 запрос к серверу из обработчика ответа 1-го запроса, вот 2 запрос не проходит (в opera, в ie и ff - нормально), если же функцию второго обработчика вешать как событие на какой-нибудь элемент, то и в опере при наступлении этого события 2-ой запрос выполняется нормально. Собственно вопрос - как устранить баг? ![]() ну и интересно, почему так происходит? ![]() Понимаю, что объяснил довольно сбивчиво, но лучше что-то ничего в голову не лезет. Соответственно пример кода в прилагаемом архиве: index.php - пример кода с багом index2.php - пример, когда второй запрос повешен на кнопку и все работает get1.php, get2.php - обработчики запросов
__________________
Этот мир для таких, как мы, Этот мир обречен на нас, Но реальность не изменить, И живем мы в ней здесь и сейчас. (C) С.Маврин |
|
|
|
|
# 3 | |
|
Advanced Member
Регистрация: 12.05.2004
Пол: Male
Сообщения: 482
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
ошибки как таковой нету, если верить консоли ошибок оперы. Конкретно: вот так вот не работает (кусок из файла index.php): Код:
function GetSubSectionsAndElementsResponce()
{
if (xmlHttp.readyState==4)
{
if (xmlHttp.status==200)
{
var xmlResponse=xmlHttp.responseXML;
var xmlDocumentElement=xmlResponse.documentElement;
var idel=xmlDocumentElement.getElementsByTagName("idel");
if (idel.item(0))
{
GetAutoByElement(idel.item(0).firstChild.data);
}
}
else window.alert("При обращении к серверу возникли проблемы: "+xmlHttp.statusText);
}
}
Код:
function GetSubSectionsAndElementsResponce()
{
if (xmlHttp.readyState==4)
{
if (xmlHttp.status==200)
{
var xmlResponse=xmlHttp.responseXML;
var xmlDocumentElement=xmlResponse.documentElement;
var idel=xmlDocumentElement.getElementsByTagName("idel");
if (idel.item(0))
{
var element=document.getElementById("calc_form");
var child=document.createElement('input');
child.name="autobutton";
child.type="button";
child.value="click";
child.onclick=function() {GetAutoByElement(idel.item(0).firstChild.data);}
element.appendChild(child);
}
}
else window.alert("При обращении к серверу возникли проблемы: "+xmlHttp.statusText);
}
}
ИМХО, для понимания нужно посмотреть весь код, который в архиве, а не только эти 2 куска.
__________________
Этот мир для таких, как мы, Этот мир обречен на нас, Но реальность не изменить, И живем мы в ней здесь и сейчас. (C) С.Маврин |
|
|
|
|
|
# 4 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Может я чего-то не понимаю, но как в index.php при клике на любую из цифр (19,20,21) получаю алерт "toyota" что в FF что в Opera (версия 9.25), на сколько я понял, так и должно быть.
В index2.php наблюдается также одинаковое поведение в двух вышеуказанных браузерах, только при каждом выборе плодится кнопка, и для получении алерта с тойотой, надо тыркнуть еще на любую из них...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
# 5 |
|
Advanced Member
Регистрация: 12.05.2004
Пол: Male
Сообщения: 482
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Hubbitus, ты все правильно понял. Сейчас скачал оперу 9.25 - действительно все сработало как и должно.
Вопрос стоит переформулировать - не работает на опере до какой-то определенной версии (точно не работает на 9.02 и 8.х (точную версию не помню - на работе осталась)). Вероятно, это баг браузера, который поправили, и если это так, то, скорее всего, решения проблемы, кроме как обновление оперы, найдено не будет
__________________
Этот мир для таких, как мы, Этот мир обречен на нас, Но реальность не изменить, И живем мы в ней здесь и сейчас. (C) С.Маврин |
|
|
|
|
# 6 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ну если баг, то скорее всего есть и WorkAround - осталось только понять в чем именно баг.
К сожалению на сайте Оперы самая старая для скачивания 9.10 ( http://www.opera.com/download/index....m=Linux%20i386 ) так что не могу даже посмотреть... Попробую найти старее, тогда уже и говорить можно будет. Ну а вообще, для подобного, просто рекомендую использовать какие-нибудь кроссбраузерные библиотеки, хоть Котияровский JSHTTPRequest, хоть Prototype, хоть от Гугла или яху, по душе AJAX-фреймворк подобрать. Они тем и хороши, что люди именно ими занимаются, долгое время оттачивают, исправляют баги, и в том числе, реализуют поведение для работы поверх подобных недочётов браузеров.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 07.01.2008 в 13:46. |
|
|
|
|
# 8 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
PhoeniX, посмотрел в Опере 9.10 - могу подтвердить - действительно не работает
![]() Я при беглом осмотре и паре попыток не смог обнаружить как это обойти. Однако, не вижу смысла и разбираться с этим Багом (теперь хоть понятно что это так, и оно даже исправлено уже в новых версиях) - майнтейнеры библиотек пусть с этим возятся, на мой взгляд. Если очень интересна причина, по их же форумам и багтрекерам надо лазить.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|