Простой пример ajax с cakephp 2.3.0 - программирование
Подтвердить что ты не робот

Простой пример ajax с cakephp 2.3.0

пожалуйста, помогите мне, если кто-нибудь может дать мне пример, как использовать 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>

когда я нажимаю ссылку original, div с id content изменяется. как я могу сделать это с помощью cakephp 2.3.0?

4b9b3361

Ответ 1

См. ниже пример:

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

            }
        });

Ответ 2

Не так много смысла использовать CakePHP с Ajax, чем с обычными HTML/PHP и Ajax.

Здесь приведен пример вызова и ответа ajax в приложении Cake APP:

JQuery

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

(Не забудьте изменить параметр url, чтобы он соответствовал вашей настройке).

Это сделает запрос ajax для вашего контроллера типов и вызовет метод fetch() с параметром "original".

Ваш тип ControlController будет выглядеть примерно так:

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, поэтому все контроллеры могут его использовать.

И соответствующий вид:

/app/View/Types/fetch.ctp

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

Ответ 3

Я только начал с cakePHP и Ajax, но из того, что я собрал, это кажется более легким подходом. С вашей точки зрения используйте:

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

Это подразумевает несколько вещей о контроллере, с которого вы вызываете это представление (например, действие индекса будет вызвано щелчком ссылки и т.д.).

Ответ 4

Вы можете сделать с jquery/ajax

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

whatyouneed может быть ответом данных для сообщения/получения или чего-то еще.