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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача кирилицы методом get 
V
    Опции темы
s1lver
Дата 2.12.2013, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток!
Бьюсь над проблемой передачи кириллицы методом GET из JavaScript.

Есть некоторый код для сохранения данных из формы вызываемых по щелчку на маркере

Код

         function saveData() {
            var name = escape(document.getElementById("name").value);
            var address = escape(document.getElementById("address").value);
            var type = document.getElementById("type").value;
            var latlng = marker.getPosition();

            var url = "addrow.php?name=" + name + "&address=" + address +
                    "&type=" + type + "&lat=" + latlng.lat() + "&lng=" + latlng.lng();
            downloadUrl(url, function(data, responseCode) {
                if (responseCode == 200 && data.length <= 1) {
                    infowindow2.close();
                    document.getElementById("message").innerHTML = "Location added.";
                }
            });
        }


Так вот, при передачи данных в кириллице до БД доходит непонятная лабуда. Как бы это обойти, подскажите пожалуйста?


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
ksnk
Дата 2.12.2013, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



s1lver, печатать на стороне сервера что пришло, долго думать.

Возможно, в кириллическом значении содержатся какие то специальные символы. Обычно, при упаковке в url используется функция encodeURIComponent
Код

 var url = "addrow.php?name=" +encodeURIComponent( name) + "&address=" + ...;


Возможно, прилетающие данные,  идут в кодировке utf-8, Это обычня ситуация для ajax и около - ajax'ных телодвижений. Так что данные нужно перекодировать в кодировку базы перед применением.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
s1lver
Дата 2.12.2013, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Мне пришло на ум только кодировать данные в base64 перед отправкой smile
Хотя из этого тоже пока ничего путного не вышло.

Добавлено через 5 минут и 5 секунд
Сам документ в utf-8, БД utf8_general_ci    

Данные поступившие в БД выглядят так

Цитата

%u0442%u0435%u0441%u0442 




--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
s1lver
Дата 2.12.2013, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо! Вопрос решен. smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
ksnk
Дата 2.12.2013, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата

Данные поступившие в БД выглядят так

%u0442%u0435%u0441%u0442 


Кто то где то по дороге сделал escape. Нужно этого кого то изловить и пусть он больше так не делает.

Если изловить не получится - можно почитать на тему `unescape php` в гугле. 

P.S.
А что было то?

Это сообщение отредактировал(а) ksnk - 2.12.2013, 10:40


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
s1lver
Дата 2.12.2013, 10:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Кто то где то по дороге сделал escape. Нужно этого кого то изловить и пусть он больше так не делает.


Это был я  smile 

По вашей наводке, капнул упаковку url и наткнулся на явное предупреждение(которого в упор не замечал раньше) PhpStorm.

Применил вот это

http://www.w3schools.com/jsref/jsref_encodeuri.asp

 и все заработало как надо! Ну, или на первый взгляд как надо.


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




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


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

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