我是 magento 的新手,正在尝试实现 ajax,但找不到合适的教程。谁能给我一些参考或指导我到哪里可以找到它?
问问题
667 次
1 回答
0
不知道教程,但我可以解释一下我一个月前在一个项目中实施的内容。
我创建了一个控制器,我们可以在该控制器上针对特定操作触发 AJAX 请求。在这种情况下,getoptionsAction
在IndexController
我们的自定义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 回答