форма ajax для cakephp 2

У меня возникли проблемы с созданием ajax-формы в cakephp 2, которая, очевидно, сильно изменилась с версии 1.3.

Я использую следующий код:

<div id="commentForm">
<div id="commentStatus"></div>
<?php
echo $this->Form->create('Comment', array('action' => 'save', 'default' => false));
echo $this->Form->input('Comment.comments_name');
echo $this->Form->input('Comment.comments_email');
echo $this->Form->input('Comment.comments_text');
echo $this->Js->submit('Save', array('update' => '#commentStatus'));
echo $this->Form->end();
?>

However the form is not submitted when pressing the button.

Буду благодарен за любую помощь!

Спасибо!


person Kik Minev    schedule 17.04.2012    source источник
comment
Я не знаю, актуально ли это, но вы закрываете div #commentForm   -  person laxris    schedule 18.04.2012


Ответы (2)


Попробуйте это в своем файле просмотра:

<?php

    $data = $this->Js->get('#CommentSaveForm')->serializeForm(array('isForm' => true, 'inline' => true));
    $this->Js->get('#CommentSaveForm')->event(
          'submit',
          $this->Js->request(
            array('action' => 'save'),
            array(
                    'update' => '#commentStatus',
                    'data' => $data,
                    'async' => true,    
                    'dataExpression'=>true,
                    'method' => 'POST'
                )
            )
        );
    echo $this->Form->create('Comment', array('action' => 'save', 'default' => false));
    echo $this->Form->input('Comment.comments_name');
    echo $this->Form->input('Comment.comments_email');
    echo $this->Form->input('Comment.comments_text');
    echo $this->Form->end(__('Submit'));
    echo $this->Js->writeBuffer();

?>

ПРИМЕЧАНИЕ: #CommentSaveForm – это идентификатор, сгенерированный CakePHP. Если у вас есть собственный, используйте его.

person thecodeparadox    schedule 18.04.2012
comment
это работает .. спасибо .. но когда запрос ajax находится в процессе, я хочу показать загружаемое изображение .. можете ли вы сказать мне, как его отобразить? - person deck john; 23.11.2012
comment
как вызвать проверку jquery? - person deck john; 27.01.2014

Вы хотите показать загружаемое изображение, используйте «до» и «завершить» в $this->Js->request():

<?php
    $this->Js->request(array('action' => 'save'), array(
       'update' => '#commentStatus',
       'data' => $data,
       'async' => true,    
       'dataExpression' => true,
       'method' => 'POST',
       'before' => "$('#loading').fadeIn();",
       'complete' => "$('#loading').fadeOut();",
   ));
?>
person steveteuber    schedule 17.05.2013