2013-02-08 18 views
14

please help me, se qualcuno mi può dare un esempio di come usare AJAX con CakePHP 2.3.0 è un esempio come questosemplice esempio ajax con 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> 

quando scatto una original Link a div con id content è cambiamento. come posso farlo con CakePHP 2.3.0?

risposta

12

Vedere sotto esempio:

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

thx per la risposta, questo non funziona, ma se echo questo ' 'prodotti', 'action' => 'get_type_product'));?> '' un output è come questo '/ jc/products/get_type_product', quindi metto questo output in un url jax come questo' url: '/ jc/products/get_type_product' ', è lavoro..maybe' url: '' prodotti ',' azione '=>' get_type_product '));?>', 'ha un problema .. – casper

0

Si può fare con jQuery/ajax

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

whatyouneed può essere una risposta di dati per un post/get o qualcosa d'altro.

+0

thx per la risposta, mi dispiace voglio un passo dopo l'altro come usare ajax con cakephp 2.3.0. un esempio sopra è solo un esempio su come effettuare l'aggiornamento div 'content' quando clicco su un link' orginal' – casper

+0

Cosa vuoi fare? quali dati vuoi cambiare in quel div? – Crsr

+0

lasciatemi fare un esempio senza usare il framework cakephp solo php e jquery/ajax Original jquery/codice Ajax $ (documento) .ready (funzione() { \t $ ('# link rimodificato'). Click (funzione () {\t \t $ .ajax ({ \t \t url: 'getType.php', \t \t tipo: 'POST', \t \t dati: "type = original", \t \t successo: la funzione (risposta) { \t \t \t $ ('# content') html (risposta);. \t \t} \t}); \t}); }); ? getType.php codice la mia domanda è come procedere passo per passo usando cakephp ma la nuova versione di cakephp è cakephp 2.3.0? grazie – casper

56

Non c'è molta differenza di utilizzare CakePHP con l'Ajax che con regolare HTML/PHP e Ajax.

Ecco un esempio di una chiamata AJAX e la risposta in una torta di APP:

jQuery:

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

(Non dimenticare di modificare il parametro url per abbinare il vostro setup).

Ciò comporterà una richiesta Ajax al controller di tipi e chiamerà il metodo fetch() con il parametro 'original'.

tuo TypesController sarebbe simile a questa:

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

    } 
} 

Aggiunta del componente RequestHandler significa torta utilizzerà automaticamente il layout minimal Ajax quando il rendering dei tuoi richieste Ajax. Di solito questo viene aggiunto in AppController in modo che tutti i Controller possano usarlo.

E la vista associata:

/app/View/Types/fetch.ctp

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

Questa risposta è più dettagliata e spiega tutte le parti nel modello MVC necessarie per farlo ... non so perché non è stato votato valido. – dcasadevall

+0

Sto seguendo la stessa procedura ma ricevo errore 404, URL non trovato .. per favore aiuto .. –

+0

@GirishGowda a seconda di dove è in esecuzione la tua app (il mio esempio assume webroot). Potrebbe essere necessario un URL completo per il parametro .url Ajax. – RichardAtHome

1

Mi sono appena iniziato con cakePHP e Ajax, ma da quello che ho raccolto finora questo sembra il più facile approccio. A per l'utilizzo da vista:

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

che implica alcune cose circa il controller che si sta chiamando questo punto di vista da (ad esempio l'azione index verrà richiamato cliccando sul link, ecc ...).