web-dev-qa-db-fra.com

Utilisation des appels de base AJAX dans Magento

J'écris un module pour effectuer un simple appel Ajax dans Magento, mais je ne parviens pas à le faire fonctionner jusqu'à présent - j'ai l'impression de manquer un composant essentiel quelque part. Ce sont les fichiers que j'ai actuellement:

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

Mon appel Ajax:

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

Mon fichier .phtml contient simplement "test" en ce moment. J'ai juste besoin de mes résultats div pour retourner la valeur "test". Je veux juste savoir si tous les bits sont en place pour que cela fonctionne?

Voici le tutoriel que j'ai suivi: http://www.atwix.com/magento/ajax-requests-in-magento/

======================== RESOLU ================ ========

Je voulais juste une barre oblique au début de mon URL:

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

Si votre javascript est généré à partir d'un fichier de modèle .phtml, vous pouvez utiliser ne fonction pratique pour rendre l'URL pleinement qualifiée, ce qui sera alors le moyen le plus sûr de procéder.

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