2012-01-12 30 views
21

Sto scrivendo un modulo per eseguire una semplice chiamata Ajax in Magento, ma non riesco a farlo funzionare fino ad ora - Mi sento come se manchi da qualche parte un componente vitale. Questi sono i file che attualmente hanno:Uso delle chiamate AJAX di base all'interno di Magento

Creare/Groupedajax/controller/AjaxController.php:

class Creare_Groupedajax_AjaxController extends Mage_Core_Controller_Front_Action { 

    public function indexAction() { 
     $this->loadLayout(); 
     $this->renderLayout(); 
    } 
} 

Creare/Groupedajax/etc/config.xml:

<?xml version="1.0"?> 
<config> 
    <modules> 
    <Creare_Groupedajax> 
     <version>0.1.0</version> 
    </Creare_Groupedajax> 
    </modules> 
    <frontend> 
    <routers> 
     <groupedajax> 
     <use>standard</use> 
     <args> 
      <module>Creare_Groupedajax</module> 
      <frontName>groupedajax</frontName> 
     </args> 
     </groupedajax> 
    </routers> 
    <layout> 
     <updates> 
     <groupedajax> 
      <file>groupedajax.xml</file> 
     </groupedajax> 
     </updates> 
    </layout> 
    </frontend> 
</config> 

My Ajax Chiama:

$j.post("groupedajax/ajax/index", { size: $j(this).val()}, function(data) { 
     $j('#results').html(data); 
    }); 

layout/groupedajax.xml:

<?xml version="1.0"?> 
<layout version="1.0"> 
    <groupedajax_ajax_index> 
    <block type="groupedajax/groupedajax" name="root" output="toHtml" template="groupedajax/groupedajax.phtml" /> 
    </groupedajax_ajax_index> 
</layout> 

Il mio file .phtml ha semplicemente 'test' in esso al momento. Ho solo bisogno del mio div di risultati per restituire il valore 'test'. Voglio solo sapere se tutti i bit sono a posto perché funzioni?

Questo è il tutorial ho seguito: http://www.atwix.com/magento/ajax-requests-in-magento/

======================== risolto ======= =================

ho solo bisogno di una barra in avanti all'inizio del mio url:

$j.ajax({ 
     url: "/groupedajax/ajax/index", 
     type: "POST", 
     data: "size="+$j(this).val(), 
     success: function(data) { 
     $j('#results').html(data); 
     } 
    }); 
+0

Rompere il problema in attività più piccole. Cosa succede se accedi direttamente all'URL "example.com/groupedajax/ajax/index"? Dato che jQuery ha un percorso relativo, sta accedendo all'URL corretto? Usa Firebug per controllare. Avete una classe di blocco che corrisponde al tipo 'groupedajax/groupedajax' o potrebbe essere usato il più semplice' core/template'? – clockworkgeek

+0

Quando sono arrivato a/groupedajax/ajax/index vedo "test", quindi funziona. Ho cambiato il tipo in 'core/template' perché non ho una classe Block corrispondente che è stata una svista da parte mia. Continuerò a controllare ... forse la chiamata di Jquery ajax ha smesso di funzionare ... –

+0

L'ho capito - il mio script URL di Jquery aveva bisogno di una barra in avanti all'inizio: $ j.post ("/ groupedajax/ajax/indice ", {dimensione: $ j (questo) .val()}, funzione (dati) { $ j ('# risultati'). html (dati); }); –

risposta

22

Se il javascript è essere uscita da un File modello .phtml quindi è possibile utilizzare a convenience function per rendere l'URL pienamente qualificato che sarà quindi il più sicuro y procedere.

$j.ajax({ 
    url: "<?php echo $this->getUrl('groupedajax/ajax/index') ?>", 
    type: "POST", 
    data: "size="+$j(this).val(), 
    success: function(data) { 
    $j('#results').html(data); 
    } 
}); 
+1

Eccellente, questa è la soluzione! Grazie! –

+0

risposta perfetta con spiegazione !!! +1 :) – SagarPPanchal

Problemi correlati