Php magento SESSION变量在php中执行javascript代码之前被取消了

时间:2016-04-19 10:08:10

标签: javascript php jquery session magento-1.9

我试图在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代码之前会话变量未设置。但是如果我注释掉未设置的会话行,那么它可以正常工作。

1 个答案:

答案 0 :(得分:1)

在经过巨大的努力之后,我注意到Magento会话在服务器端,并且在JavaScript代码被调用之前它被重置了。我们需要像回调函数来重置会话。 我在JavaScript unsetSessionVar()中编写了一个函数,它将调用服务器端的api并重置未设置的会话($ _ 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>