【问题标题】:Setting SESSION variable in PHP在 PHP 中设置 SESSION 变量
【发布时间】:2013-08-25 20:25:18
【问题描述】:

Page1.php 有一个 value=1 的变量“flag”。单击时,将调用 javascript 函数“ajaxreq()”,并在下方显示文本“Click me”(来自 page2.php 的 ajax 请求)。

当点击出现的“click me”时,调用“ajaxreq2(3)”,并显示文本信息“success”。单击显示的文本消息“成功”时,div 内容(id : displayLater)设置为显示,一直隐藏到现在。这个 div 必须在 $flag 变量中包含 $_SESSION['tag'] 的更新值。如何更新?

在这段代码中,它给出了错误:“page1.php 中未定义的索引'标签'”。

为了使用变量 $_SESSION['tag'],我必须每次都重新加载 page1.php。否则,它保持未初始化状态。 有没有可能我可以在 page1.php 中使用更新后的变量?

page1.php

<?php
session_start();
$flag=1;
echo "<span onclick='ajaxreq()'>$flag</span>";
?>

<div id="page2contents"></div>

<div id="displayLater" style="display:none">
  <span>This is done.</span>
  <?php
   if(isset($_SESSION['tag']))
     $flag=$_SESSION['tag'];
  ?>
  <span onclick="displayNow($flag)">$flag</span>
</div>

page2.php

<?php
echo "<div onclick='ajaxreq2(3)'>Click me</div>";
?>
<div id="page3contents.php"></div>

page3.php

<?php
session_start();
$tag=$_POST['tagger'];
$_SESSION['tag']=$tag;
echo "<span onclick='displayNow($tag)'>success</span>";
?>

JAVASCRIPT函数如下:

function ajaxreq()
{
  $("#page2contents").load("page2.php");
}

function ajaxreq2(x)
{
  $("#page3contents").load("page3.php",{tagger:x});
}

function displayNow(abc)
{
  abc=abc+2;    //some operation on abc
  $("#somethingToDisplay").show();   //displaying something else
}

【问题讨论】:

  • 您的问题是什么?您是否不清楚错误消息?
  • 这个信息对我来说很清楚。我需要解决这个问题。
  • 好吧,如果您想清楚该消息,那么我会说解决方法很明显。所以让我进一步问:是什么让您难以编写解决方法?你在哪里遇到了障碍?
  • 这是 page1.php 中的 Session 变量 $_SESSION['tag'] 造成的问题。实际上,该变量是在 page3.php 上初始化的,而我在 page1.php 上使用了它。这就是为什么在加载page1.php 时,会弹出$_SESSION['tag'] 尚未初始化的错误!
  • 您可以确定情况确实如此。否则 PHP 不会给你那个错误。仔细检查会话是否已启动,并且正确的会话名称和会话 ID 已分配给请求。

标签: php javascript jquery html ajax


【解决方案1】:

你呢

echo "<span onclick='displayNow('".$_SESSION['tag']."')'>success</span>";

然后

function displayNow(tag)
{
  $("#displayLater span").html(tag);
}

【讨论】:

  • 没错,但显然我发现我需要在代码中添加其他内容。我已根据需要更新了代码。如果您再看一遍,我将不胜感激。
【解决方案2】:
$("#page3contents").load("page3.php",{tagger:x});

将变量发送到 POST 方法。因此,您必须将 page3.php 中的行更改为:

$tag=$_POST['tagger'];

【讨论】:

  • 对不起,我打错了那行。已更正。但主要问题在于 $_SESSION['tag'] 的初始化。请帮忙。
猜你喜欢
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
  • 2010-10-05
  • 2020-02-08
  • 2020-08-13
相关资源
最近更新 更多