2013-04-26 63 views
0

我是magento的新手,試圖實現ajax,但找不到合適的教程。任何人都可以給我提供一些參考或指導我到哪裏我能找到它?magento中ajax的基本實現

回答

0

不知道一個tutotial,但我可以解釋一下你在一個月的項目中實現了什麼。

我創建了一個控制器,我們可以在該控制器上針對特定操作觸發AJAX請求。在這種情況下,我們定製的Offerte模塊的IndexController中的getoptionsAction

我的控制器中的getoptionsAction需要product_id並加載產品的選件。它在函數結束時構建HTML和echo。

在PHTML文件我有以下代碼來調用AJAX請求和更新的HTML對象在前端:

function get_options(prod_id){ 
    var product_options = $('product_options'); 
    var prod_id = $('product').getValue(); 
    new Ajax.Updater('product_options', 
     '<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); ?>offerte/index/getoptions', 
     { method: 'get',parameters: {prod_id: prod_id, type: 'get_regular_options' } , 
     onCreate: function(){ 
      $('loading-img-options').show(); 
     }, 
     onComplete: function (t) { 
      $('loading-img-options').hide(); 
      $('product_options').show(); 
     } 
    }); 
} 

上述函數使用的Ajax.Updater。你也可以使用Ajax.Request來獲得結果。

function stripslashes(str) { 
    return str.replace(/\\'/g,'\'').replace(/\"/g,'"').replace(/\\\\/g,'\\').replace(/\\0/g,'\0'); 
} 

function get_products(){ 
    product = $('product'); 
    cat_id = $('category').value; 
    new Ajax.Request('<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); ?>offerte/index/getproducts', 
     {method: 'get', parameters: {cat_id: cat_id, mode: 'offerte'}, 
     onCreate: function(){ 
      $('product-loading').show(); 
      $('product_options').hide(); 
     }, 
     onSuccess: function(t) { 
      resp = jQuery.parseJSON(t.responseText); 
      $('prod-container').innerHTML = resp.options ? stripslashes(resp.options) : '<?php echo $this->__('No options found') ?>'; 
      $('product-loading').hide(); 
     } 
    }); 
} 

(請注意我使用jQuery parseJSON,您還可以使用String.evalJSON,但我是個懶人這裏:-) 使用Ajax.Request的,你需要從控制系統JSON返回結果。我用下面的代碼在我的控制器,以JSON回到我們PHTML在上面的onSuccess回調函數的使用方法:

$this->getResponse()->setBody(Zend_Json::encode($result)); 

希望這是任何幫助