Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Ajax Form

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ratso

цитировать



Зарегистрирован: 19 Апр 2008 23:10:04
Сообщения: 23

СообщениеДобавлено: 01 Июл 2008 18:17:45    Заголовок сообщения: Ajax Form Ответить с цитатой

Как правильно создать формочку, которая при включенном JS произдводит ajax запрос, а если нет - обычный?
В мануале говорится что это просто сделать при помощи $ajax-form.
Конечно можно сделать просто скриптом js, но я хочу воспользоватся хелпером.
Пробую след. образом:
Код:

echo $ajax->form(array('controller'=>'users', 'action'=>'profile'), 'post', array('update'=>'content', 'indicator'=>'spiner'));
echo $form->input('Name');
...
echo $form->close('Обновить данные');
// Если написать
//echo $ajax->submit('Обновить данные');
//то ни чего не происходит при нажатии кнопки

При щелкании по кнопке появляется индикатор на пару сек, а потом идет переход к странице http://mysite/users/profile

что не так? Может нужны еще файлы? Подскажите правильный вариант!
P.S. при щелчке по сабмит должна через аякс загрузится содержание profile.ctp с флеш-сообщением Данные обновлены

Код контроллера:
...
var $components = array(...'RequestHandler'...);
var $helpers = array(...'Ajax','Form'...);
...
Код:
function profile() {
   $this->User->id=$this->Auth2->user('id');
      if(!empty($this->data)){         
         if($this->User->save($this->data)){
            $this->Session->setFlash('Данные обновлены!');
            $this->RequestHandler->setAjax($this);
         }
         } else { $this->data = $this->User->read();
         };
   }
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 05 Июл 2008 21:31:23    Заголовок сообщения: Ответить с цитатой

всё правильно тока вот сабмит ты поставил после закрытия формы...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ratso

цитировать



Зарегистрирован: 19 Апр 2008 23:10:04
Сообщения: 23

СообщениеДобавлено: 05 Июл 2008 21:52:38    Заголовок сообщения: Ответить с цитатой

DeeperMD
$ajax->submit('Обновить данные') у меня закоментирован. Если его вместо $form->close применять, то ни чего не происходит при нажатии на кнопку.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 05 Июл 2008 23:24:14    Заголовок сообщения: Ответить с цитатой

почему вместо.. разве форма не должна закрываться? Very Happy
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ratso

цитировать



Зарегистрирован: 19 Апр 2008 23:10:04
Сообщения: 23

СообщениеДобавлено: 06 Июл 2008 21:40:24    Заголовок сообщения: Ответить с цитатой

Запрос передается, индикатор показывается, данные обновляются, но после выполения форма пропадает вообще, хотя должна появлятся она же с обновленными данными.
Код:

<?php
e($form->create('User', array('action' => 'profile')));
echo $form->input('username',array('label'=>'Ваш логин:'));
echo $form->input('email',array('label'=>'Ваш E-mail:'));
echo $ajax->submit('Обновить данные', array('url' => array('controller' => 'users', 'action' => 'profile'), 'update'=>'content', 'indicator'=>'spinner'));
echo $form->end();
?>
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Ratso

цитировать



Зарегистрирован: 19 Апр 2008 23:10:04
Сообщения: 23

СообщениеДобавлено: 06 Июл 2008 21:50:15    Заголовок сообщения: Ответить с цитатой

Вроде заработало.
Поменял в контроллере кое-что:
Код:
if($this->User->save($this->data)){
            //$this->Session->setFlash('Данные обновлены!');
            //$this->redirect(array('controller'=>'users','action' => 'profile'));
            //$this->RequestHandler->setAjax($this);
            $this->layout='ajax';
            $this->render('profile');
         }
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 07 Июл 2008 11:23:45    Заголовок сообщения: Ответить с цитатой

На будущее если занимаешься Ajax то юзай соответвующие инструменты которые отслеживают запросы на сервер. Например: FireFox 2 + HttpFox Plugin

Мне помогает 100%... Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Kondrat
Гость
цитировать






СообщениеДобавлено: 08 Июл 2008 10:59:03    Заголовок сообщения: Ответить с цитатой Изменить/удалить это сообщение

Я извеняюсь, что не по теме. Щас начал использовать Ajax, и не могу решить, использовать встроенный Ajax pagination с библиотекой Prototype, или использовать Jquery pagination? (с Bakery).
Вернуться к началу
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 08 Июл 2008 11:31:09    Заголовок сообщения: Ответить с цитатой

Принципиальной разницы нет.. Единственное что могу сказать, то что cakePHP на 100% поддерживает Prototype на уровне помошников и врядли будет рациональным использование еще одной громоздкой библиотеки..

А в остальном дело вкуса..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
levalex

цитировать



Зарегистрирован: 25 Июн 2008 09:33:24
Сообщения: 8

СообщениеДобавлено: 24 Июл 2008 08:18:09    Заголовок сообщения: Ответить с цитатой

Кто-нибудь знает, как сделать обновление какого-то дива через определенное время, желательно работающий пример, Question
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru