2016-04-19 5 views
1

PHPコードの中でjQueryを使用してポップアップを表示しようとしています。ユーザーは、私はすなわちsession_variableするためにいくつかの値を設定していますし、ユーザーとして、私はJavaScriptを呼び出したいでログインしますログインしていない場合、セッション変数$ SESSION [「PROD_ID」] =「123」php magento SESSION変数がPHP内の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コードのセッション変数がunset.Butなっている実行する前に、それが正常に動作していることです。

答えて

1

巨大な闘争の後、私はMagentoセッションがサーバー側にあり、JavaScriptコードが呼び出される前にリセットされていることに気付きました。セッションをリセットするコールバック関数のようなものが必要です。 私はJavaScript内でOne関数を書いています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> 
関連する問題