gpt4 book ai didi

php - $_GET、$_SESSION 和 XMLHttpRequest 的问题

转载 作者:搜寻专家 更新时间:2023-10-31 21:12:11 25 4
gpt4 key购买 nike

在使用 $_GET$_SESSIONXMLHttpRequest 时,我需要一些帮助。我构建了一个最小的工作示例来说明问题:

index.php

    <?php
session_start();
$_SESSION['current'] = 2;
?>

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<div id="content"><?php include('table.php'); ?></div>
</body>
</html>

table.php

<?php
if(isset($_GET['current']))
{
$_SESSION['current'] = $_GET['current'];
}

$current = $_SESSION['current'];

echo '<h1>Table Value = '.$current.'<br>';

?>

浏览.php

<?php

if(isset($_GET['current']))
{

$_SESSION['current'] = $_GET['current'];
}

$current = $_SESSION['current'];

echo '<h1>Browse value = '.$current.'<br>';
print "<input type=\"button\" value=\"Click here\" onclick=\"myfunc($current)\"/>&nbsp;";

?>

ajax.js

function myfunc(input) {
xmlhttp = new XMLHttpRequest();

xmlhttp.open("GET","table.php?current=" + (input+1),false);
xmlhttp.send();
document.getElementById("content").innerHTML=xmlhttp.responseText;


xmlhttp.open("GET","browse.php",false);
xmlhttp.send();
document.getElementById("target").innerHTML=xmlhttp.responseText;
}

我使用 Firebug 控制台来跟踪正在发生的事情。首先让我指出,我将 async 参数设置为 false,因为我的服务器请求非常小。当我单击按钮时 myfunc(2) 被执行并且它请求 ./table.php?current=3./browser.php从服务器。

我的想法是,由于我首先请求 ./table.php?current=3,因此 session 变量 $_SESSION['current'] 将设置为 3 . 但是当 browse.php 被请求时, session 变量没有设置!这是我单击一次按钮后发生的情况:

foo

知道哪里出了问题吗?提前致谢:)

最佳答案

需要在browser.php开头添加session_start();。 (正如 Marc B 对您的问题的评论)。

如果您不确定哪个脚本包含在另一个已经启动 session 的脚本中,您可以使用

if(!session_id()) session_start();

在每个 php 脚本的开头。

根据你的推理:

I set the async parameter to false because my server requests are so small.

问题是网络通信可能会卡住您的页面很长一段时间(或在某些情况下永远卡住),无论响应大小如何。

关于php - $_GET、$_SESSION 和 XMLHttpRequest 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17193557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com