【问题标题】:SESSION returns old value when echoed in phpSESSION 在 php 中回显时返回旧值
【发布时间】:2014-04-08 22:32:53
【问题描述】:
<script language="javascript">
            function emergency()
            {
                if(document.getElementById('emer').checked == true)
                {
                    <?php $_SESSION['total2']= $_SESSION['total1'] + 50; ?>
                    document.getElementById('emr').innerHTML = "<b>Payable Amount: </b>" + <?php echo  $_SESSION['total2']; ?>;
                }
                if(document.getElementById('emer').checked == false)
                {
                    <?php $_SESSION['total2']= $_SESSION['total2'] - 50; ?>
                    document.getElementById('emr').innerHTML = "<b>Payable Amount: </b>" + <?php echo  $_SESSION['total2']; ?>;
                }
            }
            </script>

我在这里添加$_SESSION['total1']+50 并将值放入新会话SESSION['total2']。问题是,当我回显这个新的$_SESSION['total2'] 外部脚本时,即在页面中

<?php echo $_SESSION['total2'];?>

它返回 $_SESSION['total1']) 的值。

【问题讨论】:

  • 要使会话正常工作,您需要重新加载页面,例如
  • 你能试试$_SESSION['total2'] = (int)$_SESSION['total1'] + 50;吗?
  • 你总共做了 +50 和 -50 2 ...所以总和没有变化2
  • 嗯,你先加50,再减50?还是您指的是第一个回声?
  • @vonUbisch@us​​er1844933@D。 Kasipovic@Nishant Solanki@user3383167:即使我将代码更改为 $val= 30 + 50;并在脚本外初始化一个会话然后回显,结果为30,即加法过程中的第一个操作数。

标签: javascript php html session


【解决方案1】:

要获得$_SESSION['total2'] 的新值,您必须再次在服务器端运行代码。这意味着在获取 total2 会话变量的新值之前,您必须重新加载相应的 php 文件。

【讨论】:

  • :innerhtml 显示正确的值。但是当我在其他任何地方回显值时,即使重新加载页面,它也会返回 session['total1'] 值。
【解决方案2】:

你是在调用一个javascript函数来改变php会话变量的值吗?.. 这是不可能的,因为 php 是服务器端语言,而 javascript 是客户端,所以 php 代码会在页面加载时执行..

因此,如果您想在 javascript 函数调用上执行此操作,则需要使用 ajax...

【讨论】:

  • :现在我只是更改了 $tot=$_SESSION['TOTAL1']+50 之类的代码,在 javascript 之外,我通常将会话初始化为 $_SESSION['total2']=$tot 。然后我附和它。结果还是一样。
  • 问题是你不能使用javascript更改php变量值..但是使用ajax你可以..请参考这个答案..stackoverflow.com/questions/11540000/…
猜你喜欢
  • 2014-10-29
  • 2013-10-23
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多