2012-01-12 22 views
21

Estoy escribiendo un módulo para llevar a cabo una simple llamada Ajax en Magento, pero no puedo hacerlo funcionar hasta ahora. Siento que me falta un componente vital en alguna parte. Estos son los archivos que tienen actualmente:Usando llamadas básicas AJAX dentro de Magento

Creare/Groupedajax/controladores/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> 

Mi Ajax Llamada:

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

diseño/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> 

Mi archivo .phtml simplemente tiene 'prueba' en ella por el momento. Solo necesito que mi resultado div devuelva el valor de 'prueba'. Solo quiero saber si todos los bits están en su lugar para que esto funcione.

Este es el tutorial que he seguido: http://www.atwix.com/magento/ajax-requests-in-magento/

======================== RESUELTO ======= =================

sólo necesitaba una barra inclinada al principio de mi url:

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

Divida el problema en tareas más pequeñas. ¿Qué sucede si accede a la URL "example.com/groupedajax/ajax/index" directamente? Dado que jQuery recibe una ruta relativa, ¿está accediendo a la URL correcta? Use Firebug para verificar. ¿Tiene una clase de bloque que coincida con el tipo 'groupedajax/groupedajax' o podría ser el más simple' core/template' en su lugar? – clockworkgeek

+0

Cuando llegué a/groupedajax/ajax/index veo 'test' para que funcione. Cambié el tipo a 'núcleo/plantilla' porque no tengo una clase de bloque que coincida, que fue un descuido de mi parte. Voy a seguir comprobando ... tal vez la llamada Jquery ajax dejó de funcionar ... –

+0

Lo he descubierto: mi script Jquery URL necesitaba una barra inclinada al principio: $ j.post ("/ groupedajax/ajax/index ", {size: $ j (this) .val()}, function (data) { $ j ('# results'). html (data); }); –

Respuesta

22

Si su javascript está saliendo de una El archivo de plantilla .phtml luego puede usar a convenience function para hacer que la URL esté completamente calificada, lo que luego será el wa más seguro. y para proceder.

$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

Excelente, esa es la solución! ¡Gracias! –

+0

respuesta perfecta con explicación !!! +1 :) – SagarPPanchal

Cuestiones relacionadas