【问题标题】:Php magento SESSION variables getting unset before executing javascript code inside phpphp magento会话变量在php中执行javascript代码之前被取消设置
【发布时间】:2016-08-11 10:41:16
【问题描述】:

我正在尝试在 php 代码中使用 jQuery 显示弹出窗口。

设置会话变量的值 $SESSION['prod_id']="123"

当用户未登录时,我正在为 session_variable 设置一些值,即当用户登录时,如果为该变量设置了值,我想调用 javascript(内部 php 代码),然后向用户显示弹出窗口并取消设置来自会话的变量。

if(Mage::getSingleton('customer/session')->isLoggedIn()){
    if (isset($_SESSION['prod_id'])) {
         Mage::helper('company/product')->addDatabase($_SESSION['prod_id']);
         $productName = $session->getData('product_session');
         if (!empty($productName)){
             echo "<script type='text/javascript'>
             jQuery(document).ready(function(){
              jQuery('.show-toast').removeAttr('style').css('display','block');
                }); 
            });
                    </script>"; 
         $session->unsetData('product_session');    
         unset($_SESSION['prod_id']); 
     }
  }
}

但问题是,在执行 javascript 代码之前,会话变量是未设置的。但是如果我注释掉未设置的会话行,那么它可以正常工作。

【问题讨论】:

    标签: javascript php jquery session magento-1.9


    【解决方案1】:

    经过巨大的努力,我注意到 Magento 会话位于服务器端,并且在调用 JavaScript 代码之前被重置。我们需要类似回调函数来重置会话。 我在 JavaScript unsetSessionVar() 中编写了一个函数,该函数将调用服务器端的 api 并为 unset($_SESSION['prod_id']); 重置会话并正常工作完美

    if(Mage::getSingleton('customer/session')->isLoggedIn()){
    if (isset($_SESSION['prod_id'])) {
         Mage::helper('company/product')->addDatabase($_SESSION['prod_id']);
         $productName = $session->getData('product_session');
         if (!empty($productName)){
             echo "<script type='text/javascript'>
              jQuery(document).ready(function(){
                jQuery('.show-toast').removeAttr('style').css('display','block');
                unsetSessionVar();
              });
            </script>";
         }
      } 
    }
    
    <script type="text/javascript">
      function unsetSessionVar(){
        jQuery.ajax({
             url: 'company.com/api/sessionaction/unsetses/',
        }).done(function() {});
      }
    </script>
    

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 2013-02-17
      • 2014-01-23
      • 2017-07-08
      • 2014-04-03
      • 1970-01-01
      • 2011-04-05
      • 2023-01-23
      相关资源
      最近更新 更多