使用ajax向控制器提交值时使用Mage寄存器

时间:2013-02-22 23:27:06

标签: php ajax magento

我正在尝试从控制器传递数据以在视图中使用。发生的事情是我正在为用户选择的产品(大小和颜色)获取超级属性,并且所有这些都被序列化并传递给我获得产品对象的控制器。从这个对象,我可以获得可配置的sku,然后我需要回显到设计view.phtml文件。

控制器中的功能如下:

if($product = $this->_initProduct())
        {
           $config = $product->getSku();
          // if I echo $config here using firephp I can see that this is correct value
           Mage::register('config_product', $config);
          // I am hoping to set it as a global variable here that 
          //  I can then retrieve on the success of the ajax function
        }

在phtml中我有类似的东西将表单值发送到该控制器:

 var data = $("#product_addtocart_form").serialize();
            $.ajax({
                url: "/locator/item/index",
                data: data
            }).done(function(){
                <?php $currentProduct = Mage::registry('config_product'); 
                 // Why does this return blank??
                 ?>
                 <?php Mage::helper('firephp')->send( $currentProduct ); ?>                    
            });

1 个答案:

答案 0 :(得分:1)

PHP和JavaScript不能像这样一起使用。 PHP用于Web服务器,JavaScript安装在客户端浏览器(IE,Chrome等)中。

在您的控制器中,您需要回显一个JSON编码的字符串,并在您的javascript中将dataType添加到.ajax函数中:

        $.ajax({
            url: "/locator/item/index",
            data: data,
            dataType: 'json'
        },function(returnedData) {
            console.log(returnedData);                   
        });

在浏览器中打开js控制台以检查返回的数据。