我刚刚开始使用AJAX,所以如果问题非常基本,我会道歉。
我使用一个简单的AJAX脚本来更新会话变量,具体取决于您单击的按钮,但是我无法在单击按钮时使用新值更新标题。目前我有一个按钮来重新加载页面,但我想删除它并在每个按钮上更新标题。
<?php session_start(); ?>
<html>
<head>
<script type='text/javascript'>
function setSession( value) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "setSession.php?variable=rider&value=" + value, true);
xmlhttp.send();
}
</script>
</head>
<body>
<?php
echo "<h1>You selected: " . $_SESSION['rider'] . "</h1>";
echo "<button type='button' onclick='javascript:setSession(this.value)' value='Kristoff'>Kristoff</button> ";
echo "<button type='button' onclick='javascript:setSession(this.value)' value='Edvald Boasson Hagen'>Edvald Boasson Hagen</button> ";
echo "<a href=\"index.php\"><input type='submit' value='Re-Load Page'></a>";
?>
</body>
</html>
<?php
session_start();
if(isset($_REQUEST['variable']) && isset($_REQUEST['value']))
{
$variable = $_REQUEST['variable'];
$value = $_REQUEST['value'];
$_SESSION[$variable] = $value;
}
?>
答案 0 :(得分:1)
@Chris和@tej解释了这个程序。这就是你的做法。
<强> setSession.php 强>
<?php
session_start();
if(isset($_REQUEST['variable']) && isset($_REQUEST['value'])){
$variable = $_REQUEST['variable'];
$value = $_REQUEST['value'];
$_SESSION[$variable] = $value;
echo $_SESSION[$variable];
}
?>
<强>的index.php 强>
echo "<h1 id='selection'>You selected: " . $_SESSION['rider'] . "</h1>";
function setSession( value) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "setSession.php?variable=rider&value=" + value, true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("selection").innerHTML = "You selected ".xmlhttp.responseText;
}
}
xmlhttp.send();
}
答案 1 :(得分:0)
目前index.php只加载一次。因此,$_SESSION['rider']
只输出一次,因此不会更改。您需要使用javascript来读取您正在执行的xhr的响应(同时在setSession.php文件中输出$_SESSION['rider']
。
我不确定你的应用程序尝试做什么,但这可以在没有任何php的情况下实现。
答案 2 :(得分:0)
触发ajax调用后,您必须修改已显示的h1。
将一个类添加到h1并使用jQuery或JavaScript在ajax完成后修改该值。
if(xhr.status===200){
$('.header').text(//rider text);
}
这将在ajax之后设置值,如果用户刷新页面,它将自动从会话加载。
但正如其他答案所暗示的那样,没有php本身就可以轻松实现,但我会将应用技术决定留给你。