使用 AJAX 访问 PHP $_SESSION
Access PHP $_SESSION using AJAX
我尝试使用 AJAX 在 PHP 的 $_SESSION
变量中输入和检索数据。
这是我的场景:
笔记本电脑正在浏览保存在 srv-web 服务器上的 admin.php 网页。此服务器 (raspberry PI) 本身插入用作仪表板的大屏幕,网页 index.php (localhost) 显示在屏幕上。
Hello World 消息存储在 $_SESSION['msg']
变量中。
admin.php 中的表单使用用户输入作为值
来提供该变量
admin.php
<?php
session_start();
if (isset($_POST['msg'])) {
$_SESSION['msg'] = $_POST['msg'];
echo $_SESSION['msg'];
}
?>
<form action="admin.php" method="post">
<input type="text" name="msg" />
<input type="submit" />
</form>
到目前为止,仪表板使用 <META http-equiv="refresh" content="3; URL=index.php">
刷新管理员笔记本电脑发送的消息。
由于无法在网页上刷新某些数据,因此无法再使用此解决方案。我考虑过使用 ajax 除了 PHP 来让这个设置工作。这是我目前所拥有的:
index.php
<?php session_start(); ?>
<html>
<head>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
var session;
$.ajaxSetup({cache: false})
$.get('getsession.php', function (data) {
session = data;
});
</script>
<?php echo $_SESSION['msg']; ?>
</body>
</html>
getsession.php
<?php
session_start();
print json_encode($_SESSION['msg']);
?>
如您所料,我不是 javascript 开发人员,我无法使此代码正常工作。也没有我在 Internet 上找到的(我还不能自己编写这种代码,这有点紧迫)。
谁能帮我从 $_SESSION['msg']
中检索数据并在不刷新的情况下显示它 index.php ?
您必须像这样创建一个输入:
<input type="text" id="yourVal" value=""></input>';
然后在js中每隔一段时间刷新一次值,像这样:
setInterval(function(){
$.get('getsession.php', function (data) {
document.getElementById("yourVal").value=data;
});
}, 200);
我不知道你的 JSON 长什么样,所以我无法展示如何正确获取数据值
Edit :显然,@DanFromGermany 指出超时是一种更好的做法。以下是您可以采取的措施,以确保您不会被卡住
var interval = 1000; // 1 sec
var keepGoing = true;
function execAjax() {
$.ajax({
type: 'GET',
url: 'session.php',
dataType: 'json',
success: function (data) {
document.getElementById("yourVal").value=data;
},
error:{
keepGoing=false;
},
complete: function (data) {
// Schedule the next
if(keepGoing==true){
setTimeout(execAjax, interval);
}
}
});
}
setTimeout(execAjax, interval);
我尝试使用 AJAX 在 PHP 的 $_SESSION
变量中输入和检索数据。
这是我的场景:
笔记本电脑正在浏览保存在 srv-web 服务器上的 admin.php 网页。此服务器 (raspberry PI) 本身插入用作仪表板的大屏幕,网页 index.php (localhost) 显示在屏幕上。
Hello World 消息存储在 $_SESSION['msg']
变量中。
admin.php 中的表单使用用户输入作为值
admin.php
<?php
session_start();
if (isset($_POST['msg'])) {
$_SESSION['msg'] = $_POST['msg'];
echo $_SESSION['msg'];
}
?>
<form action="admin.php" method="post">
<input type="text" name="msg" />
<input type="submit" />
</form>
到目前为止,仪表板使用 <META http-equiv="refresh" content="3; URL=index.php">
刷新管理员笔记本电脑发送的消息。
由于无法在网页上刷新某些数据,因此无法再使用此解决方案。我考虑过使用 ajax 除了 PHP 来让这个设置工作。这是我目前所拥有的:
index.php
<?php session_start(); ?>
<html>
<head>
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
</head>
<body>
<script type="text/javascript">
var session;
$.ajaxSetup({cache: false})
$.get('getsession.php', function (data) {
session = data;
});
</script>
<?php echo $_SESSION['msg']; ?>
</body>
</html>
getsession.php
<?php
session_start();
print json_encode($_SESSION['msg']);
?>
如您所料,我不是 javascript 开发人员,我无法使此代码正常工作。也没有我在 Internet 上找到的(我还不能自己编写这种代码,这有点紧迫)。
谁能帮我从 $_SESSION['msg']
中检索数据并在不刷新的情况下显示它 index.php ?
您必须像这样创建一个输入:
<input type="text" id="yourVal" value=""></input>';
然后在js中每隔一段时间刷新一次值,像这样:
setInterval(function(){
$.get('getsession.php', function (data) {
document.getElementById("yourVal").value=data;
});
}, 200);
我不知道你的 JSON 长什么样,所以我无法展示如何正确获取数据值
Edit :显然,@DanFromGermany 指出超时是一种更好的做法。以下是您可以采取的措施,以确保您不会被卡住
var interval = 1000; // 1 sec
var keepGoing = true;
function execAjax() {
$.ajax({
type: 'GET',
url: 'session.php',
dataType: 'json',
success: function (data) {
document.getElementById("yourVal").value=data;
},
error:{
keepGoing=false;
},
complete: function (data) {
// Schedule the next
if(keepGoing==true){
setTimeout(execAjax, interval);
}
}
});
}
setTimeout(execAjax, interval);