AJAX:点击按钮后显示更新的变量

时间:2015-10-11 22:09:01

标签: javascript php ajax

我刚刚开始使用AJAX,所以如果问题非常基本,我会道歉。

我使用一个简单的AJAX脚本来更新会话变量,具体取决于您单击的按钮,但是我无法在单击按钮时使用新值更新标题。目前我有一个按钮来重新加载页面,但我想删除它并在每个按钮上更新标题。

的index.php

<?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>

setSession.php

<?php
session_start();
if(isset($_REQUEST['variable']) && isset($_REQUEST['value']))
{
 $variable = $_REQUEST['variable'];
 $value = $_REQUEST['value'];
 $_SESSION[$variable] = $value;
}
?>

3 个答案:

答案 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本身就可以轻松实现,但我会将应用技术决定留给你。