web-dev-qa-db-fra.com

exemple ajax simple avec cakephp 2.3.0

aidez-moi s'il vous plaît, si quelqu'un peut me donner un exemple comment utiliser ajax avec CakePHP 2.3.0 un exemple est comme ça

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

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

lorsque je clique sur un lien original, un div portant l'ID content est modifié. Comment puis-je le faire avec Cakephp 2.3.0?

14
casper

Voir ci-dessous exemple:

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

            }
        });
12
Vijay Choudhary

Utiliser CakePHP avec Ajax n'a pas beaucoup de différence avec HTML/PHP et Ajax.

Voici un exemple d'appel et de réponse ajax dans une application Cake:

jQuery:

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

(N'oubliez pas de changer le paramètre url pour qu'il corresponde à votre configuration).

Cela fera une requête ajax à votre contrôleur Types et appellera la méthode fetch () avec le paramètre 'original'.

Votre TypeController ressemblerait à ceci:

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

    }
}

L'ajout du composant RequestHandler signifie que Cake utilisera automatiquement la présentation Ajax minimale lors du rendu de vos demandes Ajax. Généralement, cela est ajouté à AppController afin que tous les contrôleurs puissent l'utiliser.

Et la vue associée:

/app/View/Types/fetch.ctp

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

Je viens juste de commencer moi-même avec cakePHP et Ajax, mais d'après ce que j'ai compris jusqu'à présent, cela semble être l'approche la plus simple… .. Selon vous, utilisez:

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

Ce qui implique quelques choses à propos du contrôleur à partir duquel vous appelez cette vue (par exemple, l'action d'index sera invoquée en cliquant sur le lien, etc.).

1
savedario

Vous pouvez faire avec jquery/ajax 

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

whatYouneed peut être une réponse de données pour un post/get ou autre chose.

0
Crsr