【问题标题】:Magento session on custom php script not showing on phtml page - ajax自定义 php 脚本上的 Magento 会话未显示在 phtml 页面上 - ajax
【发布时间】:2013-01-25 11:52:23
【问题描述】:

我在 Magento phtml 文件中有一些带有 ajax 的 jQuery,该文件发布到我拥有的自定义 php 脚本。我想要做的是在自定义 php 脚本中创建一个 Magento 会话,该值在进行 ajax 调用的 phtml 文件中可用。

例如 phtml 文件(类别列表页面)有 ajax 调用:

$.ajax({     
type: "POST",     
url: "/php/process.php",     
data: dataString,     
success: function(){       
location.reload();
    }     
    });

成功调用了我的自定义 php 脚本 (process.php)。

process.php 包含以下测试代码:

require_once ("/app/Mage.php");
umask(0);
Mage::app();  
$returnedString= "123";
Mage::getSingleton('core/session')->setMyValue($returnedString);

我也用 session_start() 试过这个。

现在在 phtml 文件中测试会话是否处于活动状态我有以下测试代码:

if(Mage::getSingleton('core/session')->getMyValue()=='123'):
   echo "Session created";
else:
   echo "Session not created";
endif;

如果我在 phtml 文件中显示会话数组,则会话也不可见。我不确定我哪里出错了。

非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: php ajax magento session


    【解决方案1】:

    你正在尝试的是不可能的。 phtml 文件是在您对网站的第一次请求时解释的。解释后,您将获得一个带有 javascript 的 html 文件作为服务器的响应。之后,您的浏览器会解释 Javascript 并执行 ajax 调用。这是一个全新的要求。您的 phtml 文件不会再次呈现或解释。

    当您想要使用某些内容来实现您的网站时,您必须将该内容作为对您的 ajax 调用的响应。

    【讨论】:

    • 感谢您的回复。我认为在调用自定义 php 脚本并创建会话后,ajax 代码的成功函数调用'location.reload();'这反过来会重新加载页面并再次呈现 phtml 文件(这将显示会话)。
    • 你能不能试试:require_once './app/Mage.php'; Mage::app()->setCurrentStore(1); Mage::getSingleton('core/session', array('name'=>'frontend')); $returnedString= "123"; Mage::getSingleton('core/session')->setMyValue($returnedString);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2018-08-05
    相关资源
    最近更新 更多