0

我是 magento 的新手,正在尝试实现 ajax,但找不到合适的教程。谁能给我一些参考或指导我到哪里可以找到它?

4

1 回答 1

0

不知道教程,但我可以解释一下我一个月前在一个项目中实施的内容。

我创建了一个控制器,我们可以在该控制器上针对特定操作触发 AJAX 请求。在这种情况下,getoptionsActionIndexController我们的自定义Offerte模块中。

我的getoptionsAction控制器中的 接受product_id并加载产品的选项。它构建 HTML 并在函数结束时回显 this。

在 phtml 文件中,我有以下代码来调用 AJAX 请求并在前端更新 html-object:

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 来解析 JSON。您也可以使用 String.evalJSON,但我在这里很懒 :-) 使用 Ajax.Request 您需要从控制器返回结果为 JSON。我在控制器中使用以下代码将 JSON 返回到我们的 phtml 以在上面的 onSuccess 回调函数中使用:

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

希望这有帮助

于 2013-04-26T14:21:52.143 回答