web-dev-qa-db-ja.com

cakephp 2.3.0を使用した単純なajaxの例

誰かが私にcakephp 2.3.0でajaxを使用する方法の例を教えてくれるなら、私を助けてください例はこのようなものです

<?php echo $this->html->link('Original', '#', 
                array('onclick'=>'return false;', 'id'=>'remanufactured-link', 'class'=>'get-type-product-link')); ?>   

<div id="content">
</div>

originalリンクをクリックすると、ID contentのdivが変更されます。どのように私はこれをcakephp 2.3.0で行うことができますか?

15
casper

以下の例を参照してください:

         $.ajax({
            dataType: "html",
            type: "POST",
            evalScripts: true,
            url: '<?php echo Router::url(array('controller'=>'your-controller','action'=>'your-action'));?>',
            data: ({type:'original'}),
            success: function (data, textStatus){
                $("#div1").html(data);

            }
        });
13
Vijay Choudhary

AjaxでCakePHPを使用することには、通常のHTML/PHPとAjaxを使用することほど大きな違いはありません。

Cake APPでのajax呼び出しと応答の例を次に示します。

jQuery:

$.ajax({
    url: '/types/fetch/original',
    cache: false,
    type: 'GET',
    dataType: 'HTML',
    success: function (data) {
        $('#context').html(data);
    }
});

(設定に合わせてurlパラメータを変更することを忘れないでください)。

これにより、タイプコントローラーにajaxリクエストが行われ、パラメーター 'original'を指定してメソッドfetch()が呼び出されます。

TypesControllerは次のようになります。

class TypesController extends AppController {

    public $components = array(
        'RequestHandler'
    );

    public function fetch($type) {

        $data = $this->Type->find('all', array(
            'conditions'=>array(
                'Type.type'=>$type
            )
        );

        $this->set('data', $data);

    }
}

RequestHandlerコンポーネントを追加することは、AjaxリクエストをレンダリングするときにCakeが自動的に最小のAjaxレイアウトを使用することを意味します。通常、これはAppControllerに追加されるため、すべてのコントローラーが使用できます。

そして関連するビュー:

/app/View/Types/fetch.ctp

<ul>
    <?php foreach($data as $item): ?>
    <li><?php echo $item['Type']['name']; ?></li>
    <?php endforeach; ?>
</ul>
57
RichardAtHome

私はCakePHPとAjaxから始めたばかりですが、これまでに収集したものから、これはより簡単なアプローチのようです。あなたの見解では:

echo $this->Js->link(
    'Original',
    '#',
    array('async' => true,
          'update' => 'content',
                  'id' => 'remanufactured-link'
        )
);
<div id="content">
</div>

これは、このビューの呼び出し元のコントローラーについていくつかのことを意味します(たとえば、リンクをクリックすることでインデックスアクションが呼び出されます...)。

1
savedario

あなたはjquery/ajaxで行うことができます

$("#remanufactured-link").click(function(){ whatyouneed.appenTo("#content"); })

whatyouneedは、post/getまたは他の何かに対するデータ応答である可能性があります。

0
Crsr