15

请帮助我,如果有人可以给我一个例子,如何在 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 的 divcontent会发生变化。我怎么能用 cakephp 2.3.0 做到这一点?

4

4 回答 4

60

将 CakePHP 与 Ajax 一起使用与普通的 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 参数以匹配您的设置)。

这将向您的 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);

    }
}

添加 RequestHandler 组件意味着 Cake 在呈现您的 Ajax 请求时将自动使用最小的 Ajax 布局。通常这是在 AppController 中添加的,因此所有 Controller 都可以使用它。

以及相关的视图:

/app/View/Types/fetch.ctp

<ul>
    <?php foreach($data as $item): ?>
    <li><?php echo $item['Type']['name']; ?></li>
    <?php endforeach; ?>
</ul>
于 2013-02-08T11:46:48.633 回答
14

请参见下面的示例:

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

            }
        });
于 2013-02-08T11:41:10.363 回答
1

我刚开始使用 cakePHP 和 Ajax,但从我收集到的信息来看,这似乎是更简单的方法。在您看来使用:

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

这意味着您从中调用此视图的控制器的一些事情(例如,将通过单击链接等来调用索引操作)。

于 2013-02-23T12:11:48.137 回答
0

您可以使用 jquery/ajax

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

whatyouneed 可以是 post/get 或其他东西的数据响应。

于 2013-02-08T08:43:28.330 回答