【问题标题】:post values using ajax but js don't get the updated values使用ajax发布值但js没有得到更新的值
【发布时间】:2017-08-13 23:16:02
【问题描述】:

我也运行了简单的 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>

上面的脚本序列化来自收音机、复选框和选择输入的值,稍后我将它们保存在以下变量中

<?php

if(isset($_POST['q10']))
{
  if($_POST['q10'] == 2){
    $_SESSION['q10']=1;
  }else{
    $_SESSION['q10']=0;
  }
}

最初我设置 $_SESSION['q10'] = 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>

【问题讨论】:

  • Javascript 由浏览器(客户端)运行,而 php 在远程服务器上运行,因此您不能只从 js 运行 php 代码。

标签: javascript php jquery ajax session


【解决方案1】:

您会发现许多关于 php 在服务器端运行而 Javascript 在客户端运行的 cmets 和文章。 PHP 运行一次并将数据渲染到浏览器一次,如果您想再次与 server/php 重新连接,您需要使用您正在做的 ajax。

简而言之,你需要使用包含ajax返回响应的js变量。

从 php 返回响应

if(isset($_POST['q10']))
{
   ....
   return $_SESSION['q10'];
}

并在控制台中显示为

success: function(data){
  console.log(data);
}

了解 ajax dataType

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-17
    • 2015-01-30
    • 2021-11-30
    • 1970-01-01
    • 2017-07-15
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多