将 php 会话变量传递给 javascript 并返回给 php

Pass php session variables to javascript and back to php

我有以下代码,基本上用户输入一个数字并按下搜索按钮,这使得 PHP 查找值和 return 来自 MySQL 数据库的任何记录(approval1.php?去)。这按预期工作,所以我省略了该代码。我想要做的是在用户查看记录后,他们可以通过单击 link 来批准他们。 link 运行一些 javascript,它获取从 PHP 会话输入的数字。一旦 javascript 将用户带到下一页,我希望它将该值传递回 php ,以便它可以显示在下一个表单中。如何做到这一点,还有更简单的方法吗?我找到的所有内容都是从 php 到 javascript 或相反。我似乎找不到任何显示如何取回会话变量的内容。

<!DOCTYPE HTML>
<?php 
session_start();
?>
<html>
<head><title>Title</title></head> 
</head>
<p><body>
<h3>Search:</h3>
<p>Please enter the reference number of the record you would like to review:</p>
<form method="post" action="approval1.php?go" id="searchform">
<input type="number" name="REF_NO">
<input type="submit" name="submit" value="Search">


<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function approve() {
    passSession("<? echo $_SESSION['REF_NO']; ?>");
    $.get("approval2.php");
    return false;
}
</script>

<a href="http://location/example.com" onclick="approve();">Approve Request</a>


</form>
</body>
</html>
</p>
<?php
session_start();
<?php
<script type="text/javascript">
var vars=passSession("<? echo $_SESSION['session_id']; ?>");
</script>

您可以设置隐藏输入框:

<form method="post" action="approval1.php?go" id="searchform">
<input type="number" name="REF_NO">

<input type="hidden" name="php_sess" value="<?php echo $_SESSION['REF_NO']; ?>">

<input type="submit" name="submit" value="Search">


<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function approve() {
    passSession("<? echo $_SESSION['REF_NO']; ?>");
    $.get("approval2.php");
    return false;
}
</script>

<a href="http://location/example.com" onclick="approve();">Approve Request</a>


</form>

因此,当您提交表单时,$_REQUEST['php_sess'] 将填充在 php 中。

我想您正在寻找的只是这个:将批准作为 GET 变量传递。

<a href="http://location/approval2.php?ref_no=<?php echo $_SESSION['REF_NO']; ?>&approval=1">Approve Request</a>

然后,在 approval2.php 页面中,接收那些 GET 变量:

$ref_no = $_GET['ref_no'];
$approval = $_GET['approval'];

我认为您不应该在这里使用 $_SESSION 变量。当你在 approval1.php?go 查找一些东西时,你 return 一些数据库记录,还有 return 该记录的 ID REF_NO(例如使用 JSON 发送两个一次的事情)。然后,在获得批准后,只需通过 GET 再次发送此 ID。对我来说,这更加一致并且可以防止您失败,例如当用户使用两个选项卡浏览时,等等

approval1.php

的示例
<?php

$result = json_encode(array(
  "REF_NO"  => $id,
  "content" => $content
);

echo $result;
?>

然后,访问Javascript中的JSON。使用 REF_NO 节点准备您的批准 link。