javascript - Php magento SESSION 变量在 php 内执行 javascript 代码之前未设置

标签 javascript php jquery session magento-1.9

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

为 session 变量 $SESSION['prod_id']="123"设置值

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

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

最佳答案

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

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>

关于javascript - Php magento SESSION 变量在 php 内执行 javascript 代码之前未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36715229/

相关文章:

javascript - 将mysql查询返回到nodejs flash消息

c# - 在 asp.net 中检索视频文件信息

php - 在 foreach 循环中返回数组

php - 在 PHP 中使用 foreach 解析 JSON

javascript - for 循环在append 函数中不起作用

javascript - codepen : jQuery . css() 在向下滚动经过 anchor 时编辑,反之亦然

javascript - 无法使用 `this` 从事件处理程序中访问对象的方法

php - 写入 Joomla 数据库

php - 可编辑的动态php表

javascript - 无法在 Razor View 中获取 DateTime.Now 作为字符串