我在同一页面中运行了简单的ajax,并将其存储到会话变量中,这样可以正常工作,但每当我在控制台中打印这些会话变量时,它都不会显示最新的值。
<script>
$(function(){
function showValues() {
jQuery.ajax({
type: "POST",
data: $( "form" ).serialize(),
success: function(data){
var x = <?php echo json_encode($_SESSION['q10']); ?>;
console.log(x);
}
});
}
$( "input[type='checkbox'], input[type='radio']" ).on( "click", showValues );
$( "select" ).on( "change", showValues );
showValues();
});
</script>
上面的脚本序列化了radio,复选框和选择输入的值,稍后我将这些保存在以下变量上
<?php
if(isset($_POST['q10']))
{
if($_POST['q10'] == 2){
$_SESSION['q10']=1;
}else{
$_SESSION['q10']=0;
}
}
最初我设置$ _SESSION [&#39; q10&#39;] = 0并且控制台显示此值,但每当我更改值时,它会显示前一个值。它没有更新
P.s刷新页面后,我得到了更改的值。我不应该在控制台中获得更新的值
<nav class="segmented l3_seg">
<input type="radio" name="q10" value="1" id="10a">
<label for="10a">Richtig</label>
<input type="radio" name="q10" value="2" id="10b">
<label for="10b">Falsch</label>
</nav>
答案 0 :(得分:0)
有关php的许多评论和文章都在服务器端运行,而Javascript正在客户端运行。 PHP运行一次并将数据呈现给浏览器一次如果你想再次与server / php重新连接,你需要使用你正在做的ajax。
简而言之,您需要使用包含ajax返回响应的js变量。
从php返回回复
if(isset($_POST['q10']))
{
....
return $_SESSION['q10'];
}
在控制台中显示为
success: function(data){
console.log(data);
}
了解ajax dataType