与cakephp 2.3.0的简单ajax示例

cas*_*per 14 ajax cakephp

请帮助我,如果有人能给我一个例子如何使用ajax与cakephp 2.3.0一个例子是这样的

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

<div id="content">
</div>
Run Code Online (Sandbox Code Playgroud)

当我点击original链接时,带有id的div content会发生变化.我怎么能用cakephp 2.3.0做到这一点?

Ric*_*ome 57

与常规HTML/PHP和Ajax相比,使用CakePHP与Ajax没有太大区别.

以下是Cake APP中ajax调用和响应的示例:

jQuery的:

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

(不要忘记更改url参数以匹配您的设置).

这将向您的Types控制器发出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);

    }
}
Run Code Online (Sandbox Code Playgroud)

添加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>
Run Code Online (Sandbox Code Playgroud)

  • 这个答案更详细,并解释了MVC模型中所有必要的部分.不确定为什么它没有投票有效. (5认同)

Vij*_*ary 13

见下面的例子:

         $.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);

            }
        });
Run Code Online (Sandbox Code Playgroud)

  • 回答这个问题,这不行,但如果我回应这个`<?php echo Router :: url(array('controller'=>'products','action'=>'get_type_product'));?>'`输出就像这个`/ jc/products/get_type_product`,所以我把这个输出放到ajax url,就像这个`url:'/ jc/products/get_type_product'`,它是work..maybe`url:'<?php echo Router :: url(array('controller'=>'products','action'=>'get_type_product'));?>',`有问题.. (2认同)