2012-01-12 49 views
21

我正在編寫一個模塊在Magento中執行一個簡單的Ajax調用,但目前我無法獲得它的工作 - 我覺得我錯過了某個重要組件。這些文件我目前有:在Magento中使用基本的AJAX調用

Creare/Groupedajax /控制器/ 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> 

我的阿賈克斯電話:

$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來返回「測試」值。我只是想知道是否所有的位都適合這個工作?

這是教程,我都遵循:http://www.atwix.com/magento/ajax-requests-in-magento/

========================解決======= =================

我只是需要一個斜槓,在我的網址的開頭:

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

將問題分解爲更小的任務。如果您直接訪問URL「example.com/groupedajax/ajax/index」,會發生什麼情況?既然jQuery被賦予了一個相對路徑,它是否訪問了正確的URL?使用Firebug進行檢查。你有一個塊類與'groupedajax/groupedajax'類型匹配還是可以使用更簡單的'核心/模板'來代替? – clockworkgeek 2012-01-12 12:45:17

+0

當我到/ groupedajax/ajax/index時,我看到'test',這樣就可以工作。我已經將類型更改爲「核心/模板」,因爲我沒有一個匹配的Block類,這是我的疏忽。我會繼續檢查......也許jquery ajax調用停止工作... – 2012-01-12 13:05:59

+0

我已經想通了 - 我的jquery網址腳本需要在開頭處使用正斜槓: $ j.post(「/ groupedajax/ajax/('#results')。html(data); }); {size:$ j(this).val()},function(data) – 2012-01-12 13:14:12

回答

22

如果你的JavaScript正從一個輸出.phtml模板文件,那麼你可以使用a convenience function來使URL完全合格,然後將是最安全的wa y繼續。

$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

非常好,這就是解決方案!謝謝! – 2012-01-12 14:46:54

+0

完美解答! +1 :) – SagarPPanchal 2017-10-02 10:07:53