Не работает ajax search

[FAQ] AjaxSeach — проблемы и решения

Пару дней боролся с AjaxSeach и решил выложить результаты в отдельной теме, хотя ранее уже кое-чего писал в теме http://modxcms.com/forums/index.php/topic,18528.msg116076.html#msg116076

Сразу отмечу, что советы в теме http://modxcms.com/forums/index.php/topic,6778.msg47528.html#msg47528 не помогают, так как описанные проблемы отсутствуют в версии AjaxSearch 1.6, входящей в состав MODx 0.9.6. Зато есть другие проблемы, которые я и собираюсь описать.

Все описанное ниже выполнялось на MODx 0.9.6 с AjaxSearch 1.6, кодировка сайта и базы MySQL UTF-8, сравнение utf8_unicode_ci, PHP 5 и MySQL 5.

Вначале после установки системы без каких-либо усилий заработал поиск без использования Ajax, но при использовании Ajax не искались русские фрагменты. Кроме того, для русского языка не работал регистронезависимый поиск. С решения этих проблем я и начал. Сразу скажу, что использую такой вариант вызова сниппета:

1. Проблема – не работает поиск с использованием Ajax для русских слов. Только для слов из латинских букв.
Решение – в файле AjaxSearch.inc.php в начало функции connectForAjax() добавить строку:

После этого поиск Ajax заработал.

2. Проблема — иногда поисковые запросы не подсвечиваются и не выводится фрагмент, в котором найдено слово (если не совпадает регистр).
Решение (для utf8) – в сниппете AjaxSearch ищется строка

и в ней выполняется такая же операция, то есть добавляется u после i.
Далее точно такие же две строки следует отредактировать в файле AjaxSearch.php. После этого подсветка работает и все выводится как надо.

Для остальных проблем найдены не слишком универсальные решения, так что подробно решения я описывать не буду.

3. Проблема – если на какой-то странице есть комментарий вида

и при вырезании фрагмента с найденной фразой вырезалась часть комментария, вся структура HTML рушится. Решение – добавил удаление комментариев в обработке найденного.

4. Проблема – если в найденной странице имеется символ процента – %, весь Ajax-поиск рушится. То есть выдает ошибку распознавания URL (это, как мне кажется, проблема реализации Ajax в mootools, хотя могу и ошибаться).
Решение (не слишком удачное) – % меняю на «проц.». При этом если перейти на страницу поиска или на найденную страницу, там будут знаки %, слово «проц.» только в Ajax-результатах.

5. Проблема – функция urlencode правильно кодирует строки, когда не используется Ajax, и не кодирует, когда он используется (получаются адреса с русскими буквами).
Решение: использовать urlencode(urlencode($searchString)).

6. Проблема – по умолчанию при использовании Ajax-поиска выдается код, не проходящий валидацию CSS.
Решение: исправить кое-чего в файле templates.inc.php. Вообще-то я в нем и с самого начала что-то правил, сейчас уже не помню что.

7. Проблема – если из результатов поиска перейти на страницу при включенной подсветке, подсвечены будут все найденные слова на этой странице. Но если регистр слов не совпадает с тем, что был в поисковом запросе, подсветка не работает. То есть, после выполненного Ajax-поиска, например, слова «СтИль», перейдя по ссылке «Щелкните здесь, чтобы увидеть все результаты поиска.» можно увидеть подсвеченные фрагменты, но если перейти по ссылке на один из найденных документов, подсветка исчезнет. Если же искать «стиль», подсветка не исчезает.
Решение – не найдено. Подозреваю, что где-то надо в preg_replace добавить u после I, но где – не знаю.
Исправлено — найденное решение описано ниже, на следующей странице.

Подозреваю, что проблем намного больше, чем я описал. Если про обычном поиске нештатные ситуации обрабатываются системой MODx, при Ajax-поиске все должно обрабатываться в самом сниппете, а этого не делается. Да и выводимые результаты плохо обрабатываются перед выдачей – наверняка могут возникнуть проблемы, аналогичные комментариям и знакам процента.

Пример работающего поиска, в котором исправлены найденные недочеты, можно посмотреть на сайте e-kao.ru, правда, бывают некоторые проблемы с хостингом, сайт периодически недоступен.

Здравствуйте.
Попробовал добавить :
mysql_query(«SET CHARACTER SET ’».$database_connection_charset.»’», $db) or die(«Charset error : » . mysql_error());
перед return $table_prefix;
вывел:
Charset error : Unknown character set: ’’
как это можно исправить?

все исправил изменением запроса с четким указанием кодирвки

$lang = mysql_query(«SET CHARACTER SET ’utf8’», $db) or die(«Ошибка в запросе установки языка : » . mysql_error());

приведенный вами в другой теме.

есть вопрос:
как сделать чтобы «Щелкните здесь, чтобы увидеть все результаты.» переходила на страницу со всеми результатами. Создал страницу «Поиск», но что прописывать в шаблоне не знаю.

и ещё, в результатах поиска вместо некоторых букв появляются знаки вопроса, это устранимо? вот пример:
. �тных лиц за наличный и безналичный расчет: Тиражирование на ризографе(бланки, листовки и т.д); Полноцветн�.

заранее вам спасибо!

вывел:
Charset error : Unknown character set: ’’
как это можно исправить?

Если не забыли дописать global $database_connection_charset;, то это значение не установлено.

В файле manager/includes/config.inc.php пропишите

Это, кстати, важно не только для AjaxSearch. По умолчанию при установке MODx почему-то не задает правильное значение.

Quote from: p13sitive at Oct 01, 2007, 05:44 AM

как сделать чтобы «Щелкните здесь, чтобы увидеть все результаты.» переходила на страницу со всеми результатами. Создал страницу «Поиск», но что прописывать в шаблоне не знаю.

Рекомендую почитать документацию. Там сказано:

&moreResultsPage [целое] (по умолчанию — 1) — ID страницы «все результаты». Эта страница должна также содержать вызов сниппета.

В моем примере вызова сниппета ID страницы равен 10. На странице результатов стоит

Quote from: p13sitive at Oct 01, 2007, 05:44 AM

и ещё, в результатах поиска вместо некоторых букв появляются знаки вопроса, это устранимо? вот пример:

и другие, которые естественно не закрывает 🙂 из-за чего весь шаблон расплывается и обрамляет себя рамкой таблицы. Мб, как-то можно исключить теги в результатах поиска, поискал в документации, там таких параметров не указано 🙁 ? Заранее вам большое спасибо. «>

По поводу кодировки попровил, спасибо.

extension_loaded(’mbstring’) выдает false, сайт стоит на денвере. Простите за невежество, но как можно в Денвере включить mbstring?

нашел интересный баг в ajaxsearch. При показе всех ответов он может добавить несколько «вырезок» из конктретных страниц. Так вот, у меня прай-лист хранится в таблицах, когда он вытаскивает найденную информацию он вместе с ней вытягивает теги

и другие, которые естественно не закрывает из-за чего весь шаблон расплывается и обрамляет себя рамкой таблицы. Мб, как-то можно исключить теги в результатах поиска, поискал в документации, там таких параметров не указано ?

Заранее вам большое спасибо.

и другие, которые естественно не закрывает 🙂 [/quote] Если это происходить только при Ajax-поиске (то есть при переходе на страницу такого нет) то нужно в файле [b]AjaxSearch.php[/b] найти строку [b]strip_tags( $text );[/b] и поменять ее на [b]$text= strip_tags( $text );[/b] :'( Чтобы проблема исчезла при простом поиске (не Ajax), точно такие же действия (строку [b]strip_tags( $text );[/b] поменять на [b]$text= strip_tags( $text );[/b]) нужно выполнить в сниппете AjaxSearch. У меня на сайте табличные теги нормально удаляются (я вообще-то эту строку раньше тоже исправил, просто не написал об этом ;D). «>

extension_loaded(’mbstring’) выдает false, сайт стоит на денвере. Простите за невежество, но как можно в Денвере включить mbstring?

Денвером не пользуюсь, а так надо в конфигурации PHP указать, чтобы подключилось mbstring. Подробнее http://lv.php.net/manual/ru/ref.mbstring.php

Quote from: p13sitive at Oct 02, 2007, 11:05 AM

вытягивает теги

и другие, которые естественно не закрывает

Если это происходить только при Ajax-поиске (то есть при переходе на страницу такого нет) то нужно в файле AjaxSearch.php найти строку strip_tags( $text ); и поменять ее на $text= strip_tags( $text ); :’(

Чтобы проблема исчезла при простом поиске (не Ajax), точно такие же действия (строку strip_tags( $text ); поменять на $text= strip_tags( $text );) нужно выполнить в сниппете AjaxSearch.

У меня на сайте табличные теги нормально удаляются (я вообще-то эту строку раньше тоже исправил, просто не написал об этом ).

Источник

не срабатывает Ajax запрос

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Почему не срабатывает Ajax запрос?
Добрый день! Не пойму почему не срабатыват запрос. 7

Так тоже страница перегружается Вот точно какая-то мелочь где-то, которую не заметно

Добавлено через 9 минут
Вот, если я ставлю вместо , то не перегружается, но тогда PHP скрипт не срабатывает

ТАк, вроде отработал аякс, но теперь PHP не работает вообще и если меняю type на JSON, То вообще ничего не происходит. Ты бы не мог проверить у себя мой код? Может ты увидишь что не так?

Вчерашний день прожил без интернета, отвечаю только сегодня.
Итак, подытожим, Вы желаете чтобы пользователь вводил в поле адрес сайта, отправлял его и в ответ получал содержимое из meta content=»содержимое» . (Правильно понял?) Это содержимое нужно куда — то поместить. Я выбрал блок с

Код главной страницы (! в демостранице — вбил адрес форума по умолчанию, чтобы не вводить вручную при проверках, здесь оставил как было):

Не всегда срабатывает ajax
Доброго времени суток. Делаю сайт по нахождению оптимального пути по алгоритму Дейкстры.. При.

Не всегда срабатывает ajax метод
Здравствуйте, подскажите пожалуйста, почему не всегда срабатывает ajax запрос? Делаю универсальную.

Источник

Почему не работает javascript после ajax получения ответа?

На странице реализована фильтрация товаров через ajax.
После получения ответа от сервера и его вставки на страницу перестает работать скрипт с ховер эффектом.

Скрипт подключен в head

Код отправки ajax запроса и обработка ответа

Пробовала строку
$(«#sectionproducts»).empty().append(content);
заменить на
$(«#sectionproducts»).empty().html(content);
Результат не меняется

Как можно решить проблему работы скриптов после отправки ajax запроса?

  • Вопрос задан более трёх лет назад
  • 33018 просмотров

Добрый день.
Может это конечно и некропост, но все же я хотел написать по поводу 2го пункта, про событие jQuery.on().
Везде написано

Но более точное и правильное я нашел в сети, чтобы скрипт отрабатывал именно на подгруженных ajax элементах:

Решено! JQuery обработчики, такие как hover(), click(), bind(), on() и т.д. обрабатывают элементы только при загрузке.
Чтобы они реагировали на подгруженный ajax’ом контент, есть несколько решений:

  1. Загрузить ajax’ом скрипт заново(не лучший вариант). Но работает.
  2. Использовать обработчик live(). Но с версии >= JQuery 1.9 его убрали и перенесли в обработчик on(), в котором объединили и bind(), и delegate().
  3. На мой взгляд, самый лучший. Для тега установить атрибут onClick, установить ему значение функции, например:
    а в скрипте переделать обработчики в функцию.
    Вместо:

Т.е. у тэга div при нажатии атрибут onClick вызывает эту функции. И тут без разницы, подгружен контент ajax’ом или нет.
Если хотите в функции использовать значение $(this), то задайте в атрибуте у функции onClick=»function_name(this);», а в скрипте в функции задайте событие для этого значения

Надеюсь, кому-то будет полезно 🙂

Почему такой вариант не рассматривается?

Я так пользуюсь давно. сам когда-то натыкался на это, но так же быстро решил. оказывается это прям ВОПРОС))

Для извращенцев, вот так ещё можно:

Спасибо, по всякому уже пробовал, это помогло!

Источник

Не работает Ajax Search. Почему?

Хотел сделать поиск по сайту с помощью Ajax Search, не получается. Работаю с MODx 0.95, все сниппеты также старые. Кодировка — windows-1251. Встроенные сниппеты пальцем не трогал, стоит всё как есть. И работают все, кроме поиска. Короче, версия системы старая, но провереная: я с ней сделал уже несколько сайтов, всё супер. Никогда не возникало ни проблем с кодировками, ни с чем-либо ещё. Вот поиском я озадачился впервые. И тут такой облом

Может, я чего-то не сделал? Или сделал не так? Не понимаю.
Вызов сниппета делаю такой, как приведено в примере на сайте modxcms.com и на wiki:

Please enter a search term to begin your search.
There were no search results. Please try using more general terms to get more results.

И не важно, кириллицу я использую, или латиницу. Результат один и тот же. А искомое слово — вот оно, в тексте. Есть. Но Ajax его в упор не видит.
Помогите, поиск по сайту необходим. Если есть альтернативы Ajax Search, подскажите, пожалуйста, какие.

UPD: И ещё прикол. Ввожу в форму поиска цифры (они имеются в тексте, это дата, год). Ввожу: 1814.
После клика на кнопку GO! выскакивает алерт: EXCEPTION AJAX: Обнаружена недопустимая кодировка при попытке декодирования URI undefined!

Источник

Читайте также:  Как отремонтировать гнилую машину
Оцените статью