Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 02 Апр 2009 13:01:20 Заголовок сообщения: Ajax autoComplete не работает |
|
|
Привет.
Версия CakePHP 1.2
Есть контроллер Advs, в нем есть функция autoComplete (с простым содержимым для проверки работоспособности):
function autoComplete ( )
{
$this->set('a', 'test');
}
соответственно view autoComplete:
<?php echo $a; ?>
ну и на главной странице есть такой код:
<?php echo $form->create ( 'Advs', array ( 'url' => '/advs/view' ) ); ?>
<?php echo $ajax->autoComplete ( 'Advs/descr', '/advts/autoComplete' ) ?>
<?php echo $form->end ( 'Go' ) ?>
Также в контроллере подключены хелперы и компонент:
var $helpers = array ( 'Html', 'Form', 'Javascript', 'Ajax' );
var $components = array ( 'RequestHandler' );
ничего не работает. может кто подскажет что я сделал не так? Где допустил ошибку? |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 02 Апр 2009 21:22:56 Заголовок сообщения: Re: Ajax autoComplete не работает |
|
|
uran26 писал(а): | 'Advs/descr' |
Это что такое? |
|
Вернуться к началу |
|
 |
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 03 Апр 2009 10:56:06 Заголовок сообщения: Re: Ajax autoComplete не работает |
|
|
Таблица и поле в ней же |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 04 Апр 2009 23:29:38 Заголовок сообщения: |
|
|
А не через точку ли случайно пишется? _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
 |
Гость
цитировать
|
Добавлено: 06 Апр 2009 09:25:08 Заголовок сообщения: |
|
|
michas писал(а): | А не через точку ли случайно пишется? |
изначально так и было. ни так, ни так не работает. |
|
Вернуться к началу |
|
 |
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 06 Апр 2009 20:53:03 Заголовок сообщения: |
|
|
а prototype подключен? а scriptaculous? |
|
Вернуться к началу |
|
 |
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 07 Апр 2009 10:33:05 Заголовок сообщения: |
|
|
Да, в layouts/default.ctp:
<?php echo $javascript->link('scriptaculous.js?load=effects') ?>
<?php echo $javascript->link('prototype') ?> |
|
Вернуться к началу |
|
 |
Fenrir
цитировать
Зарегистрирован: 29 Авг 2008 07:59:05 Сообщения: 5
|
Добавлено: 07 Апр 2009 15:25:37 Заголовок сообщения: |
|
|
Господа, вы бы хоть издалека на документацию глянули ДО того, как что-нибудь пытаться писать. И вывод ошибок включили.
По процессу разработки вообще:
1. Уровень дебага как минимум 1. А то у вас там может быть гора warning и notice, а мы тут предполагаем, что все видимые ошибки вы уже сами пофиксили.
2. Проверка ведется в Firefox со включенным плагином Firebug. Так и только так. Потому что, судя по приведенному коду, у вас браузер должен захлебываться ошибками JS.
По кейку:
1. Имена полей пишутся через точку и только через точку.
2. Имена моделей всегда в единственном числе. Короче, с формой бред.
3. Автокомплитер реагирует (показывает) только ответы, содержащие ненумерованый список. То есть "минимальный вид для проверки работоспособности" должен выглядеть так: <ul><li><?php echo $a; ?></li></ul>
По prototype и script.aculo.us:
1. Сперва подключается prototype, а только затем script.aculo.us
2. Автокомплитер не эффект, а контрол, и библиотеку контролов тоже нужно грузить: scriptaculous.js?load=effects,controls
3. Смотреть нужно не только "появилось окошко или нет", а также "ушел ли запрос" и "что пришло в ответе". |
|
Вернуться к началу |
|
 |
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 07 Апр 2009 16:57:10 Заголовок сообщения: |
|
|
уровень дебага 2
видимых warning и notice нет
как я и писал, изначально имена полей разделял через точку(в каком то примере нашел через слеш, решил проверить уже и так, но...), сейчас исправил - через точку.
имя модели (в форме: "<?php echo $ajax->autoComplete ( 'Adv.descr', '/advs/autoComplete' ) ?> ") в единственном числе - немного правил для вашего же удобства и лишнее написал.
ответ для автокомплитера формируется в ненумерованном списке - опустил для краткости.
согласно вашим замечаниям изменил порядок подключения библиотек:
<?php echo $javascript->link('prototype') ?>
<?php echo $javascript->link('scriptaculous.js?load=effects,controls ') ?>
изменений нет, кроме того, что ИЕ говорит: "выполнено, но с ошибками. предполагается наличие объекта строка 25", вот строки 24-26:
//<![CDATA[
new Ajax.Autocompleter('AdvId', 'AdvId_autoComplete', '/advs/autoComplete', {});
//]]>
В javascript не спец. подскажите что дальше? |
|
Вернуться к началу |
|
 |
Fenrir
цитировать
Зарегистрирован: 29 Авг 2008 07:59:05 Сообщения: 5
|
Добавлено: 14 Апр 2009 16:42:34 Заголовок сообщения: |
|
|
Да что тут быть спецом, вам даже долбанутый IE прямым текстом сказал, что нету у него этого объекта. У вас либо вообще прототайп не прогрузился (и он ругнулся на new Ajax), либо скрипакулосовские контролы (и ошибка касается new Ajax.Autocompleter). Вам же сказано было, Firefox и Firebug - чтобы узнать настоящую ошибку.
Для работы нужен prototype.js, scriptaculous.js, effects.js (здесь он нафиг, но раз вы его подключаете), controls.js. Причем версии прототайпа и скриптакулоса должны быть совместимы. И лежать оно должно в app/webroot/js при вашем подключении. |
|
Вернуться к началу |
|
 |
uran26
цитировать
Зарегистрирован: 02 Апр 2009 12:13:49 Сообщения: 31 Откуда: Кировоград
|
Добавлено: 15 Апр 2009 10:39:31 Заголовок сообщения: |
|
|
разобрался. все работает.
делал так как написано тут /wiki/Manual11/Helpers#h30-30. тут и ошибки подцепил - вместо точки ставил слеш при разделении полей таблицы, например (см. выше посты michas и Fenrir).
смотрел в firebug - ничего уходило и не приходило соответственно
закачал заново свежие версии библиотек javascript - prototype и scriptaculous с http://script.aculo.us/downloads (prototype брал не с http://www.prototypejs.org/). подключил echo $javascript->link(array(вЂprototype’,’scriptaculous’));
основной проблемой, мне кажется, был пустой ajax.ctp, который лежал в view/layouts/
сунул я его туда когда делал корзину для магазина на ajax как в статье http://com.spweb.ru/archives/150, а потом просто забыл кильнуть.
кажется и все что я поменял.
спасибо тем кто откликнулся. |
|
Вернуться к началу |
|
 |
Евгений Гость цитировать
|
Добавлено: 16 Окт 2009 16:17:39 Заголовок сообщения: |
|
|
Проблема возникла такая.
Когда путь к странице такой http://моиСайт/poiskP.php, то все отлично работает, список выпадает.
Но когда такой http://моиСайт/poisk/ (в .htaccess правило RewriteRule ^(.*)poisk/(.*)$ $1poiskP.php$2) то нифига не работает.
Как исправить? Вариант использования poiskP.php не катит.
Спасибо. |
|
Вернуться к началу |
|
 |
Евгений Гость цитировать
|
Добавлено: 16 Окт 2009 16:20:01 Заголовок сообщения: |
|
|
Сделал выпадающий список с использованием Ajax.Autocompleter.
Но вылез косяк.
Когда путь к странице такой http://моиСайт/poiskP.php, то все отлично работает, список выпадает.
Но когда такой http://моиСайт/poisk/ (в .htaccess правило RewriteRule ^(.*)poisk/(.*)$ $1poiskP.php$2) то нифига не работает.
Как исправить? Вариант использования poiskP.php не катит.
Спасибо. |
|
Вернуться к началу |
|
 |
pihto
цитировать
Зарегистрирован: 16 Окт 2009 16:26:13 Сообщения: 2
|
Добавлено: 16 Окт 2009 16:27:26 Заголовок сообщения: |
|
|
Сделал выпадающий список с использованием Ajax.Autocompleter.
Но вылез косяк.
Когда путь к странице такой http://моиСайт/poiskP.php, то все отлично работает, список выпадает.
Но когда такой http://моиСайт/poisk/ (в .htaccess правило RewriteRule ^(.*)poisk/(.*)$ $1poiskP.php$2) то нифига не работает.
Как исправить? Вариант использования poiskP.php не катит.
Спасибо. |
|
Вернуться к началу |
|
 |
pihto
цитировать
Зарегистрирован: 16 Окт 2009 16:26:13 Сообщения: 2
|
Добавлено: 16 Окт 2009 16:35:38 Заголовок сообщения: |
|
|
Извиняюсь, за такое количество сообщений.
При попытке написать сообщение выдавал ошибку, а сообщение оказывается публиковал. |
|
Вернуться к началу |
|
 |
|
|