0

ContactUsフォームにAjaxを実装したいのですが、これが私のコードです。コントローラ:

class ContactsController extends AppController {

public $layout = 'default';
public $helpers = array('Html', 'Form', 'Paginator','Js');
public $components = array('RequestHandler');

public function index(){
    if(!empty($this->data)){
        if($this->Contact->save($this->data)){
            if($this->RequestHandler->isAjax()){
                $this->render('success','ajax');
            } else {
            $this->Session->setFlash('Message sent');
            $this->redirect(array('action'=>'index'));
            }
        }
    }
}
}

ファイルを閲覧する

<?php echo $this->Html->script('jquery', FALSE); ?>
    <div id="success"></div>
    <h2>Contact Us</h2>

    <?php
            echo $this->Form->create();
            echo $this->Form->input('name',array('id'=>'name'));
            echo $this->Form->input('email',array('id'=>'email'));
            echo $this->Form->input('message',array('id'=>'message'));
            echo $this->Js->submit('Send',array(
                'before'=>$this->Js->get('#sending')->effect('fadeIn'),
                'success'=>$this->Js->get('#sending')->effect('fadeout'),
                'update'=>'#success'
            ));
            echo $this->Form->end();                
            ?>                
<div id="sending" style=" display: none;background-color: #90ee90;">Sending...</div>

view/layouts/ajax.ctp ファイルには以下が含まれます。

<?php //echo $this->fetch('content'); ?>
<?php echo $content_for_layout; ?>

私はこれらの両方で試しました。そして default.ctp レイアウトは head セクションに含まれています:

echo $scripts_for_layout;
echo $this->Js->writeBuffer(array('cache'=>TRUE)); 

ソースファイルにjqueryが含まれていますが、PHPStormはjqueryファイルにエラーを表示し、firebugは表示しますファイヤーバグショー

すべてが明確になることを願っています。

4

2 に答える 2

0

beforeandsuccessコールバックのバッファを無効にする必要があります。

echo $this->Js->submit('Send',array(
    'before'=>$this->Js->get('#sending')->effect('fadeIn', array('buffer' => false)),
    'success'=>$this->Js->get('#sending')->effect('fadeOut', array('buffer' => false)),
    'update'=>'#success'
));

編集: タイプミスにより、この問題も発生する可能性があります: の'fadeout'代わりに'fadeOut'.

于 2013-01-28T08:02:54.260 に答える
0

私はまったく同じ問題を抱えています。Andrew Perkins による Cakephp チュートリアルを使用していたようです (私はまったく同じものを使用しているため、コードは同じです) http://www.youtube.com/watch?v=dQ71psonQx0

問題は、彼がこのビデオ チュートリアルを Cakephp 1.3 に基づいて作成したことだと思います。構文は 2.0 で大幅に変更されました。2.2.3 で動作させる方法もまだわかりませんが、これが理由だと思います。

于 2013-02-09T22:44:45.287 に答える