如何在JavaScript / HTML中检索$ _SESSION值

时间:2014-08-20 03:56:52

标签: javascript php html session

我有这个工作脚本但是当我更改它以检索(假设)$_SESSION["username"]内的值时,它不会检索任何内容。整个页面保存为.php,因为我正在使用一些使用PHP的代码。

代码:

echo "<script type=text/javascript>";
echo "var hidden = false;";

echo "function actiondb1() {";
echo "if(!hidden) {";
echo "document.getElementById(\'clickdb1\').style.visibility = \'hidden\';";
echo "document.getElementById(\'db1\').style.visibility = \'visible\';"; 
echo "document.getElementById(\'db1\').disabled = false;";
echo "document.getElementById(\'db1\').value =".$_SESSION["username"];.";";

echo "}";
echo "}";
echo "</script>";

如何让脚本正确检索$_SESSION["username"];中的数据?

3 个答案:

答案 0 :(得分:2)

请注意,例如,如果$_SESSION["username"]的值为John,则您的echo将生成此结果:

document.getElementById('db1').value = John;

但John应该是一个字符串,应该用引号括起来,否则JavaScript会将它理解为变量名(该值可能是undefined)。

答案 1 :(得分:0)

作为Havenard mentioned,此行缺少Javascript单引号以正确表示字符串变量:

echo "document.getElementById(\'db1\').value ='".$_SESSION["username"];."';";

但是,如果你能提供帮助,你真的不应该用PHP打印JS。虽然iatboy's answer回答最终无法解决您的错误,但这是一种 更干净的做事方式。

?>
<script type=text/javascript>;
var hidden = false;
function actiondb1() {
  if(!hidden) {
      document.getElementById('clickdb1').style.visibility = 'hidden';
      document.getElementById('db1').style.visibility = 'visible'; 
      document.getElementById('db1').disabled = false;
      document.getElementById('db1').value ='<?php echo $_SESSION["username"];?>';
    }
}
</script>;
<?php

答案 2 :(得分:0)

您是否在此页面中开始了会话?如果您没有,请使用以下代码开始会话。

    session_start();

然后将代码更改为

echo "<script type=text/javascript>";
echo "var hidden = false;\n";
echo "function actiondb1() {\n";
echo "alert('".$_SESSION['username']."')\n";  //test code
echo "if(!hidden) {\n";
echo "document.getElementById('clickdb1').style.visibility = 'hidden';\n";
echo "document.getElementById('db1').style.visibility = 'visible';\n"; 
echo "document.getElementById('db1').disabled = false;\n";
echo "document.getElementById('db1').value ='".$_SESSION["username"]."';\n";
echo "}\n";
echo "}\n";
echo "</script>";

没关系。