Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XMLHttpRequest в Опере 
:(
    Опции темы
Black
  Дата 20.5.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Попробовал XMLHttpRequest - хорошая вещь. Однако, Опера как обычно глючит.

Если MSIE и Mozilla, Firefox нормально передают параметры:

Data.open('POST', url, true);
Data.open('GET', url, true);

то опера поддерживает только:
Data.open('GET', url, true);

Если в url будут русские буквы, например, сделать чат и передавать через URL фразы, то Опера будет выводить разную кракозябу, например, слово "Молодец" выведется как:

молодец

Вообщем вопрос: а как заставить оперу корректно передавать через
Data.open('GET', url, true);
русские символы, чтобы чат нормально работал. Если передавать цифры или латинские символы, то все ОК.


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Guest
Дата 20.5.2005, 19:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Смотри в сторону encodeURIComponent. А именно - перекодируй русские буквы в %xx, тогда всё будет ок.
Но у меня таких проблем не возникло. Точнее, возникло, но об этом позже.
  Вверх
Black
Дата 20.5.2005, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



encodeURIComponent - уже пробовал... передаю данные в PHP скрипт, предварительно обработав их в JavaScript'e используя encodeURIComponent().

Код

str = encodeURIComponent(str);


PHP-скрипт принимает данные.. пропускаю их через

Код

$text = urldecode($text); 


Однако, не помогает получаются те же крякозябы :-)

Интересно почему PHP скрипт не перекодирует данные обратно, вроде использую функцию urldecode() ??? Версия PHP 5.0.копейки


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Black
Дата 20.5.2005, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



В Опере надо так:

Data.open('post', url, true);
Data.open('get', url, true);

В нижнем регистре.

PHP-скрипт возвращает русские символы через XMLHttpRequest в Оперу нормально... т.е. фразы чата отображаются корректно для пользователей Оперы. Однако, если они сами станут писать в русской кодировке в чат попадут кракозябы :-)

Придется опять забить на пользователей Оперы...

Кстати, если использовать encodeURI, encodeURIComponent тогда все браузеры выводят кракозябы :-)

Только escape() в PHP скрипт отправляет строку в URL формате. Однако, функция urldecode() не может ее перевести :-)


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Aliance
Дата 20.5.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



А под какой Оперой тестишь?
PM MAIL WWW ICQ Skype   Вверх
Guest
Дата 20.5.2005, 22:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Aliance
Opera
Версия: 8.0
Сборка: 7561
Платформа: Win32
Система: Windows 2000
  Вверх
Aliance
Дата 20.5.2005, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Вот этого я и боялся smile Это не есть гут, что даже 8ая не понимает ентого smile
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 20.5.2005, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Кодировка на странице какая в Content-type, посмотри что стоит и в meta и в заголовках. Возможно не русская, вот Опера и тупит кодируя с юникода на левую кодировку.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Black
Дата 21.5.2005, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Sardar
очень странно, но при передачи данных методом post символы +, &, # исчезают. Все остальные ОК


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 21.5.2005, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Скорее всего, текст принимаетсья как URL закодированный, следовательно все:
  • + - превращаються в пробел
  • & - пытаеться выдернуть мнемонику типа & nbsp;
  • # - пытаеться также выдернуть как мнемонику-код символа



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Black
Дата 21.5.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Sardar
решил проблему путем замены символов соответствующими URL-кодами:

# на %23
+ на %2B
& на %26




--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 21.5.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



PHP-DIRECTOR а не проще ли escape функцию заюзать ? smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Black
Дата 21.5.2005, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Sardar

Цитата
PHP-DIRECTOR а не проще ли escape функцию заюзать ?


пробовал... не знаю ничего не выходит, опять появляются кракозябы...

Решил проблему так: беру строку и посимвольно кажный символ кодирую соответствующим URL-кодом данного символа.

Так работает :-)

Не знаю почему так выходит, но стандартные функции типа: escape(), encodeURI() не помогают. Используя их, все равно выходят кракозябы...

Код

str = escape(str);

не помогло

Код

str = encodeURI(str);

не помогло



--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 21.5.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Скорее всего потому что escape кодирует символ в юникод, а на сервер у тебя PHP или что то подобное с юнокодом, которое с юникодом не дружит, вот и выходит всякая лажа.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 21.5.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



А назад декодируешь?
Кидай код

ЗЫ: еще можно воспользоваться спец. функцией для таких операция - encodeURIComponent()
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0549 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.