Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Поиск с использованием ajax
Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009 Откуда: Беларусь, Витебск
Помог: 0 раз(а)
Исходник - http://htmlweb[dot]ru/ajax/example/search.php
Из базы данных выводит русские тексты иероглифами или кубиками, как поправить не знаю, скорее всего нужно чего-то дописать в ajax_framework.js
Пожалуйста, помогите разобраться.
Viper
Отправлено: 24 Июня, 2010 - 12:19:13
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
костыль тут у вас будет толстый, большой и неповротливый. ajax работает только с utf-8 и никакие ухищрения с указанием charset в script не помогут. есть 3 варианта.
1. сделать нормальную базу в utf-8(либо конвертировать текущую). ЗЫ! Забудьте про виндовозные кодировки аля cp1251, koi8-r и прочую фигню.
2. использовать iconv, что не всегда работает корректно. и опять же костыль
3. либо использовать ещё один костыль который находится по адресу http://javascript[dot]ru/forum/ajax/[dot][dot][dot]1251-v-ajax[dot]html
Покинул форум
Сообщений всего: 227
Дата рег-ции: Сент. 2009 Откуда: Беларусь, Витебск
Помог: 0 раз(а)
Спасибо, с кодировками разобрался.
JustUserR
Отправлено: 24 Июня, 2010 - 15:44:38
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
Костыль тут у вас будет толстый, большой и неповротливый. ajax работает только с utf-8 и никакие ухищрения с указанием charset в script не помогут. есть 3 варианта.
Можно решить данную проблему и с клиентской стороны без использования перекодировок - можно привести передаваемые данные в urlencoded-вид с помощью JS-функции encodeURIComponent и передавать на сервер данные в виде неизменяемых символов Главное при запросе указать исходную кодировку в Accept-charset или Content-type для POST-запросов - чтобы обрабатыващий PHP-скрипт знал каким образом происхдть urlencode-декодирование
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Viper
Отправлено: 24 Июня, 2010 - 16:05:49
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
JustUserR почитайте посты по приведенной ссылке. там описаны проблемы данных методов.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
JustUserR почитайте посты по приведенной ссылке. там описаны проблемы данных методов.
Действительно интересная проблема - однако если использовать передачу данных через iframe-элемент и указывать явно кодировки и локали соответствующих элементов - то все работает и так
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Viper
Отправлено: 25 Июня, 2010 - 08:04:16
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
JustUserR тогда зачем ajax? можно и так iframe использовать. но это ж не стандартный метод.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
JustUserR тогда зачем ajax? можно и так iframe использовать. но это ж не стандартный метод.
В принципе использование обмена данными через iframe и предполагалась как альтернатива классическому ajax - при этом такой метод с iframe хоть и является специфическим но ничем не хуже ajax-а - ведь с его использование можно также делат асинхронные запросы и показывать уровни загрузки и помимо прочего за счет отказа от ActiveX-элементов пропадают все проблемы с кодировкой элементов - и к тому же ее явно можно указать с помощью document.charset и изменять локали элементов с помощью аттрибута language
Поэтому как замену методу со ссылке можно привести следующую схему - сначала опредяляется кодировка документа и соответственно всех данных на нем - после этого используются таблицы по которым берется charAt для передаваемой строки и получается его номер в частности в шестнадцатиричном виде - и в итоге передается реальная 7-битовая строка в urlencoded-виде
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.