使用ajax发布值但js不会获取更新的值

时间:2017-08-13 15:06:52

标签: javascript php jquery ajax session

我在同一页面中运行了简单的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>

1 个答案:

答案 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