SESSION变量显示在其定义之前

时间:2010-02-24 21:41:09

标签: javascript ajax variables undefined

我突出了一个问题,即SESSION变量在其定义之前“显示”..

Index.php是我的网站,其中有一个设计,里面有一个框架。现在,index.php有这个:

<div id='message2' onclick="closeNotice2()" style="display: none">
<? echo $_SESSION["user_message_123456"]; ?>
</div>

在框架内部,有一个insert.php,用于将数据存储到user_message_123456。

在它存储之前,它将显示未定义..但是在存储之后,它仍将显示在undefined,UNTIL你刷新页面..

但是,我想这样做,当你存储会话时,它会显示它,你不需要刷新页面(f5)。

我知道这是因为你在加载index.php时调用了$ _SESSION变量,除非你没有运行insert.php,否则它没有被定义, 但我想找到另一种方法/方法来做到这一点。

任何想法如何做到这一点?例子?请告诉我!!

2 个答案:

答案 0 :(得分:0)

做你想做的事并不是特别可行。在其他页面之后加载的页面无法完全返回并更改过去。

如果你完全确定框架是你的方法的重要部分,你将不得不使用跨框架Javascript来允许两个文件进行通信。但是,很可能您的应用程序流只需要修改以使此任务变得不必要。根据Javascript,不必要是不明智的。

答案 1 :(得分:0)

要在外框上显示一些新内容而不重新加载它,您可以使用一些简单的JavaScript。

将以下脚本添加到insert.php文件中,在已将值写入$ _SESSION数组的部分中:

<script type="text/javascript">
    var container = parent.document.getElementById('message2');
    container.innerHTML = '<?=$_SESSION["user_message_123456"]?>';
</script>

一些提示:

  • 这会将<div id='message2'...的内容设置为变量的值。
  • 如果不起作用,请在</script>结束标记前添加以下行:

    alert('Script is working');
    

    现在检查insert.php加载时是否看到弹出消息。如果不是,则表示脚本未被执行;移动代码,使其放在<head>内或结束前</body></html>

希望这有帮助