Я пишу модуль для выполнения простого вызова Ajax в Magento, но я не могу заставить его работать до сих пор – я чувствую, что где-то отсутствует какой-то жизненно важный компонент. Это файлы, которые у меня есть:
Creare / Groupedajax / Контроллеры / AjaxController.php:
class Creare_Groupedajax_AjaxController extends Mage_Core_Controller_Front_Action { public function indexAction() { $this->loadLayout(); $this->renderLayout(); } }
Creare / Groupedajax / и т.д. / 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>
Мой Ajax Call:
$j.post("groupedajax/ajax/index", { size: $j(this).val()}, function(data) { $j('#results').html(data); });
макет / 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>
В моем файле .phtml просто есть «тест». Мне просто нужны мои результаты div, чтобы вернуть значение «test». Я просто хочу знать, есть ли все биты, чтобы это работало?
Это руководство, которым я придерживался: http://www.atwix.com/magento/ajax-requests-in-magento/
======================= РЕШЕНИЕ ============================================================================
Мне просто нужна косая черта в начале моего URL:
$j.ajax({ url: "/groupedajax/ajax/index", type: "POST", data: "size="+$j(this).val(), success: function(data) { $j('#results').html(data); } });
Если ваш javascript выводится из файла шаблона .phtml, то вы можете использовать функцию удобства, чтобы сделать URL-адрес полностью квалифицированным, что будет самым безопасным способом.
$j.ajax({ url: "<?php echo $this->getUrl('groupedajax/ajax/index') ?>", type: "POST", data: "size="+$j(this).val(), success: function(data) { $j('#results').html(data); } });