loadURL в OpenLayers для разных браузеров

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Salex
Новоприбывший
Сообщения: 11
Зарегистрирован: 25 фев 2010, 10:08
Репутация: 0

loadURL в OpenLayers для разных браузеров

Сообщение Salex » 16 мар 2010, 15:16

Проблема вот в чем: имеется функция, содержащая следующий код:

Код: Выделить всё

searchURL='http://complex/geoproject/searchbystreet/';
	searchURL+=OpenLayers.Util.getElement("streetsearch").value+'/';
	var req = OpenLayers.loadURL(searchURL, '', this, searchSuccess, searchError);
Серверная часть написана на python под django. Используется также мапсервер, но он тут как бы не при чем.
Вызов этой функции работает совершенно по-разному в разных браузерах:
в IE - выполнение уходит на searchError;
в google chrome - выполняется успешно, но возвращает пустое значение, логи на сервере говорят о том, что запрос был выполнен.
в firefox - аналогично предыдущему, firebug во вкладке "консоль" подкрашивает адрес вызова красным, хотя на вкладке "сеть" все нормально вроде и при вводе этого адреса в адресную строку того же firefox'а отображается нормальный результат
safari - работает как нужно!!!!

Подскажите кто-нибудь пожалста в чем тут может быть проблема или хотя бы куда копать? Пробовал заменить вызов loadURL использованием чистого ajax, как в примерах, результат изменился немного - IE стал возвращать пустые значения как и остальные, работал также только сафари. Также уже пробовал и jQuery и использование OpenLayers.ProxyHost с теми же результатами.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: loadURL в OpenLayers для разных браузеров

Сообщение Mavka » 16 мар 2010, 15:34

OpenLayers.Util.getElement() это аналог document.getElementById()?
При использовании loadURL нужно обязательно указать ProxyHost.
В Firebug во вкладке "консоль" адрес вызова можно раскрыть и посмотреть "ответ".

А так, вроде все правильно.
лангольеры под окном жрали время ом-ном-ном

Salex
Новоприбывший
Сообщения: 11
Зарегистрирован: 25 фев 2010, 10:08
Репутация: 0

Re: loadURL в OpenLayers для разных браузеров

Сообщение Salex » 16 мар 2010, 16:08

Mavka писал(а):OpenLayers.Util.getElement() это аналог document.getElementById()?
да, это подглядел в каких-то примерах OL
Mavka писал(а): В Firebug во вкладке "консоль" адрес вызова можно раскрыть и посмотреть "ответ".
Смотрел, в самом ответе пусто, есть только заголовки

Код: Выделить всё

Заголовки ответа
Date	Tue, 16 Mar 2010 13:00:55 GMT
Server	Apache/2.2.14 (Win32) mod_wsgi/2.7 Python/2.6.4
Keep-Alive	timeout=5, max=99
Connection	Keep-Alive
Transfer-Encoding	chunked
Content-Type	text/html; charset=utf-8
Заголовки запроса
Host	complex
User-Agent	Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 WebMoney Advisor MRA 5.5 (build 02842);
Accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language	ru,en-us;q=0.7,en;q=0.3
Accept-Encoding	gzip,deflate
Accept-Charset	windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive	115
Connection	keep-alive
Origin	null
Mavka писал(а):При использовании loadURL нужно обязательно указать ProxyHost.
Да, этой ссылкой я и пользовался. Но то ли настроил не так, то ли ничего не понял совсем, но у меня при передаче адреса url разбивался каким-то образом по пробелу и в python-скрипт на сервер приходило например вместо "Московская ул" просто "Московская", но и даже в таком случае работоспособность проявил только сафари. И если не ошибаюсь, то проксихост нужен, если сервер в другом домене, а если в одной рабочей группе как сейчас у меня и есть, то не обязателен.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: loadURL в OpenLayers для разных браузеров

Сообщение Mavka » 16 мар 2010, 16:17

без прокси можно обращаться только на тот же хост, где лежит исходная веб-страница, т.е. примерно так:

Код: Выделить всё

/geoproject/searchbystreet/МояУлица/ 
а при добавлении http://complex/ уже нужен.

Я тут подумал, у вас получается url такого вида:

Код: Выделить всё

http://complex/geoproject/searchbystreet/Московская ул/   
меня пробел перед "ул" сильно смущает. Может быть вы хотели:

Код: Выделить всё

http://complex/geoproject/searchbystreet/?addr=Московская%20ул   
При использовании Safari на Apache приходит url с экранированным пробелом и все работает?
лангольеры под окном жрали время ом-ном-ном

Salex
Новоприбывший
Сообщения: 11
Зарегистрирован: 25 фев 2010, 10:08
Репутация: 0

Re: loadURL в OpenLayers для разных браузеров

Сообщение Salex » 16 мар 2010, 16:47

Mavka писал(а): Я тут подумал, у вас получается url такого вида:

Код: Выделить всё

http://complex/geoproject/searchbystreet/Московская ул/    
меня пробел перед "ул" сильно смущает. Может быть вы хотели:

Код: Выделить всё

http://complex/geoproject/searchbystreet/?addr=Московская%20ул    
При использовании Safari на Apache приходит url с экранированным пробелом и все работает?
Ммм, нет, я хотел именно так, как у меня, в учебнике по django склоняли к такому типу url, когда передаваемые параметры задаются не парой параметр-значение, а значением, находящимся в определенном месте адреса....хотя экранировать пробелы при использовании прокси можно попробовать.
Mavka писал(а):При использовании Safari на Apache приходит url с экранированным пробелом и все работает?
Вот сейчас только обнаружил интересную вещь в логах доступа apache:

Код: Выделить всё

Доступ через сафари, адрес:
/geoproject/searchbystreet/%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB/
Доступ через фаерфокс, адрес:
/geoproject/searchbystreet/%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB/
Доступ через хром, адрес:
/geoproject/searchbystreet/%D0%9C%D0%BE%D1%81%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B0%D1%8F%20%D1%83%D0%BB/
Доступ через IE, адрес:
/geoproject/searchbystreet/\xcc\xee\xf1\xea\xee\xe2\xf1\xea\xe0\xff%20\xf3\xeb/
IE почему-то делает запрос не в той кодировке, по видимому отсюда и ошибка. Вот у остальных адреса одинаковые, но один из них получает ответ, а два других нет((

Salex
Новоприбывший
Сообщения: 11
Зарегистрирован: 25 фев 2010, 10:08
Репутация: 0

Re: loadURL в OpenLayers для разных браузеров

Сообщение Salex » 30 мар 2010, 09:44

Так-с, дело оказалось вроде в кроссдомене, проблема решилась при использовании jsonp. В дальнейшем попользуюсь каким-нибудь готовым фреймворком с кроссдоменом.

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость