我想要做的是使用变量将一个值从一个页面使用php传递到另一个页面使用php然后在第二页中将此值从php传递给javascript。
我根据我点击的图像初始化HTML中的变量。 问题是,每次我传递一个不同的值(下面的代码中的不同值是12和7),这意味着我点击了不同的图像,并在重新加载我的页面后,我仍然得到第一个值。
我尝试取消设置变量和/或session_destroy(),但没有运气。更清楚:
第一页:
<?php
session_start();
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="secondpage.php"><img src="images/first_image.png" alt="image" <?php $_SESSION['choice'] = 12; ?>></a>
<a href="secondpage.php"><img src="images/second_image.png" alt="image" <?php $_SESSION['choice'] = 7; ?>></a>
</body>
</html>
第二页:
<?php
session_start();
$option = $_SESSION['choice'];
//unset($_SESSION['choice']); //failed
echo $option; //option is always 12
//session_destroy(); //failed
?>
<!doctype html>
<html>
<head>
<title>Monuments</title>
<script>
var option = <?php echo json_encode($option); ?>;
//var option = "<?php echo $option; ?>"; // i tried also this way
alert("option is : " + option); //option is always 12
</script>
</head>
<body>
</body>
</html>
你能告诉我这是什么问题吗? 或者为我想做的事情推荐更好的解决方案?
答案 0 :(得分:1)
您要为$_SESSION['choice']
中的HTML
分配值。
使用sessions
并不是实现您想要实现的目标的正确方法。
在您的第一页上,使用$_GET
参数来识别所选的纪念碑。
<a href="secondpage.php?choice=12"><img src="images/first_image.png" alt="image"></a>
在第二页上,您可以使用$_GET['choice']
包含更改的代码:
<!DOCTYPE HTML>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="secondpage.php?choice=12"><img src="images/first_image.png" alt="image"></a>
<a href="secondpage.php?choice=7"><img src="images/second_image.png" alt="image"></a>
</body>
</html>
第二页:
<?php
$option = $_GET['choice'];
echo $option;
?>
<html>
<head>
<title>Monuments</title>
<script>
var option = <?php echo $option; ?>;
alert("option is: " + option);
</script>
</head>
<body>
</body>
</html>
答案 1 :(得分:1)
实际上,您在这些代码行中设置了两次SESSION变量的值。首先,将其设置为12,然后将其设置为7. $ _SESSION ['choice']不能同时具有两个值。当您说“我根据我点击的图像初始化HTML中的变量”时。这是不正确的。无论用户做什么,这两行代码都会运行,因为PHP在输出页面之前会运行所有代码。
<a href="secondpage.php"><img src="images/first_image.png" alt="image" <?php $_SESSION['choice'] = 12; ?>></a>
<a href="secondpage.php"><img src="images/second_image.png" alt="image" <?php $_SESSION['choice'] = 7; ?>></a>
另一种方法是拥有两个不同的超链接,并在第二页上设置变量。
第一页:
<a href="secondpage.php?choice=12"><img src="images/first_image.png" alt="image"></a>
<a href="secondpage.php?choice=7"><img src="images/second_image.png" alt="image"></a>
第二页:
if (isset($_GET['choice'])){
$option = $_GET['choice'];
}
答案 2 :(得分:0)
抱歉,您似乎错过了关于PHP的基本观点。 (这需要一点时间习惯)。由于PHP是服务器脚本,您需要记住页面中的所有PHP都是在任何生成的客户端代码(HTML / JavaScript等)之前执行的。因此,在将任何HTML发送到客户端之前,您只需在服务器上执行$ _SESSION [&#39; choice&#39;]的分配。您需要专注于在锚标签周围放置一个表单,并让他们使用javascript将值12或7分配给隐藏字段,然后使用提交发布表单数据。 到当前页面(在导航到另一个页面之前将其分配给SESSION值是有意义的) - 或 - 到目标页面,避免需要分配给SESSION变量。 希望这能指出你正确的方向。 ..仅举例来说......
<?php
session_start();
if (array_key_exists('choice',$_POST))
{
$_SESSION['choice']=$_POST['choice'];
header('Location: secondpage.php');
}
// Assuming you have an array of images with corresponding choice values...
$images=array('12'=>'images/first_image.png','7'=>'images/second_image.png');
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Title</title>
</head>
<body>
<form name="myform" action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
<?php
foreach ($images as $choice=>$imagefile)
{
?>
<a href="#"><img src="<?php echo $imagefile?>" alt="image" onclick="document.myform.choice='<?php echo $choice?>';document.myform.submit();"></a>
<?php
}
?>
<input type="hidden" name="choice" value="">
</form>
</body>
</html>
这更有意义吗?
答案 3 :(得分:0)
为什么你有两个具有相同名称选择的变量?将第二个变量的名称更改为choice2并检查输出,我相信你的代码是正确的。
代码有效
<html>
<head>
<title>Test1</title>
</head>
<body>
<?php
session_start();
$_SESSION['choice'] = 2;
$_SESSION['choice2'] = 20;
?>
<a href="sessionTest2.php">Click me</a>
</body>
</html>
Test2会话
<html>
<head>
</head>
<body>
<?php
session_start();
echo $_SESSION['choice'];
echo $_SESSION['choice2'];
?>
</body>
</html>