Звучит так, как будто есть проблема с тем, как сервер отвечает на вызовы AJAX, а не с формой или javascript.Я хотел бы предложить вам отладить пару ключевых областей.
В идеале вы должны отладить это с помощью Xdebug на вашем Apache, подключенном к вашей IDE (Netbeans, Eclipse, другие).Мои личные предпочтения / настройки - Netbeans, но другие будут работать нормально.Если вы не можете использовать оперативную отладку, вы можете вставить операторы print_r / echo через блоки кода и таким образом отследить вызов.
- Mage_CatalogSearch_AjaxController
Javascript на form.mini.phtml должен отправлять запрос в Mage_CatalogSearch_AjaxController
и suggestAction
.Установите точки останова / сообщения трассировки по обе стороны от первого оператора if
в этом методе.
Если точка останова / трассировка не была достигнута, попробуйте вручную нажать на действие, поместив http://hostname/catalogsearch/ajax/suggest?q=query
в адресную строку браузера.
Если это не сработает, значит, что-то не работаетКонфигурация модуля catalogsearch, вероятно, связана с разделом <frontname><routers>
.Используйте Alan Storm Configviewer или модули CommerceBug для отладки этого.
Mage_CatalogSearch_Block_Autocomplete
AjaxController
создает экземпляр Mage_CatalogSearch_Block_Autocomplete
, который выполняет фактический запрос.Установите точку останова / трассировку непосредственно перед $suggestData = $this->getSuggestData();
, чтобы проверить, что экземпляр Блока создается
После этой строки блок вызывает собственный метод getSuggestData()
.Продолжайте прослеживать код, чтобы увидеть, где происходит ошибка.
Mage_CatalogSearch_Model_Query :: getSuggestCollection ()
Блок вызывает этот метод для получения значений, соответствующих параметру q
, в частности, метода setQueryFilter()
, который вставляет параметр в запрос SQLкритерии.Снова проследите здесь, чтобы найти ошибку.
Я не могу особо подчеркнуть, насколько легче вы найдете это (и большинство проблем с Magento), когда вы используете живую отладку в вашей IDE.Прочитайте мой ответ здесь , если вам нужны советы по этому процессу.
Убедитесь, что у вас есть сервер в Режим разработчика , чтобы вывести как можно больше ошибок.