2012-04-17 12 views
4

私はcakephp 2にajaxフォームを作成するのに問題があります。これは明らかに1.3から多くの変更がありました。cakephp 2 ajaxフォーム

私は、次のコードを使用しています:ボタンを押したとき

<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(); 
?> 

フォームが送信されていませんが。

私は何か助けに感謝します!

ありがとうございます!

+0

私はそれが関連しているか分からないが、あなたはdivを閉じますか#commentForm – laxris

答えて

10

ビューファイルでこれを試してみてください:

<?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はIDは、あなたがあなた自身を持っている場合は、

+0

その作業..ありがとう..しかし、AJAXの要求が処理されているとき、私は読み込み中の画像を表示したいです...それを表示する方法を教えてください? –

+0

jquery検証を呼び出す方法は? –

2

あなたはロード画像を表示することを使用し、CakePHPのによって生成され、使用することを「前」と「完了」の$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();", 
    )); 
?> 
関連する問題