2012-01-09 3 views
1

Я изучаю cakephp 2.0 и пытаюсь работать над Ajax. Я успешно создал форму, которая работает с ajax. Теперь мне нужно работать над ссылками. Я хочу, чтобы сделать fadein div, нажав на ссылку.Cake PHP JS Helper

<?php $this->Js->get('#Edit-link')->event('click',$this->Js->get('#sending')->effect('fadeIn'));?> 

Этот код не работает и генерации ниже яваскрипта

$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 
$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 
$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 
$("#sending").bind("click", function (event) {$("#sending").fadeIn(); 
return false;}); 

ответ

1

Весь код Вы разместили кажется правильным. JsHelper должен выводить сценарий jQuery, который вы включили, за исключением того факта, что он напечатан 4 раза, что, вероятно, связано со вторым вызовом $this->Js->get() внутри первой функции.

Что не работает точно? Правильно загружена библиотека jQuery as per the documentation?

Этот сценарий ожидает наличия ссылки с идентификатором #sending. Это также не препятствует нормальному поведению ссылки для выполнения (следуя URL-адресу в атрибуте href), который перезагружает страницу и останавливает любые эффекты или действия JavaScript, чтобы должным образом иметь место. Обычно вы должны включить event.preventDefault() внутри функции jQuery, чтобы предотвратить это (see the documentation here). Не могли бы вы предоставить полный код для своего вида?

Кроме того, возможно, было бы более удобно писать этот тип скрипта непосредственно в синтаксисе jQuery, делая это, торт Cake добавляет больше абстракции в этом случае, что может быть ненужным для небольших проектов.

+0

На самом деле я хочу, чтобы он сгенерировал этот JS $ («# Edit-link»). Bind («click», function (event) {$ («# отправка»). FadeIn(); return false;}) ; но вы видите сгенерированный JavaScript выше –

+0

Если я запустил ваш код с добавлением 'false' в качестве третьего параметра' $ this-> Js-> get ('# Edit-link') -> event() 'Получаю сценарий, который вы хотите. Без добавления он даже не печатает строку, и не делает это четыре раза подряд. Вы уверены, что он где-то не завернут в петлю? – mensch

+0

Вы имеете в виду Js-> get ('# Edit-link') -> событие ('click', $ this-> Js-> get ('# отправка') -> эффект ('fadeIn'), false) ;?> Я был в цикле foreach, но я удалил его оттуда. Но при этом «false» не генерирует javascript. У меня есть другой вызов Js чуть выше него Js-> link ('Показать все сообщения', 'http: // localhost/practice/cakephp/posts/ajaxcall', array ( 'update' => '# content2', 'htmlAttributes' => array ('other' => 'value') ));?>. Его работа прекрасна. –