使用AJAX / PHP

时间:2015-05-01 06:29:13

标签: javascript php jquery ajax session

我已经尝试了多种方法来尝试多次更新这个会话变量(即使其在每次点击时增加而不仅仅是第一次),但它不起作用。

<script>
$(document).ready(function(){
    $('.nextWeek').on('click', function(){
        $.post ('incrementWeek.php', function (response) {
            location.reload();
        });

        location.reload();
    });
});
</script>

我试图在点击某个按钮/链接后递增$ _SESSION ['idn']变量以供重用。 “incrementWeek.php”就是:

<?php
    session_start();
    $session = $_SESSION['idn'];
    $session++;
    $_SESSION['idn'] = $session;
?>

常见问题的几个快速解答:session_start()是第一个PHP标记下的第一件事,$ _SESSION ['idn']变量在文件的前面设置,但我使用if结构:

if (isset($_SESSION['idn'])) {

}

else {
    $id = getIDFromDate($connection, $currentSunday);
    $_SESSION['idn'] = $id;
}

我尝试使用警报查看变量是否发生变化,但保持不变。第一页加载后,AJAX(我想?)甚至不承认我点击了“nextWeek”类按钮。页面没有重新加载意味着location.reload()没有被执行。

任何想法都表示赞赏。

编辑:谢谢。我已根据每个人的反馈编辑了上面的代码,现在它根本没有重新加载页面,$ _SESSION变量也没有更新。语法上有什么问题吗?

4 个答案:

答案 0 :(得分:0)

$_SESSION['idn']++不正确。你应该这样做:

$session = intval($_SESSION['idn']);
$session++ ;
$_SESSION['idn'] = $session;

答案 1 :(得分:0)

在设置会话变量后,需要重定向。

通过这种逻辑,因为您使用ajax调用设置会话,您将无法在服务器端重定向到任何URL,因此您的会话变量未设置。

我认为您需要在某处重复使用链接点击计数,这里你可以做的是另一种解决方案是在同一个ajax服务器端php文件中设置你的点击次数,即incrementWeek.php,但不是使用会话而不是尝试使用PHP中的cookie

答案 2 :(得分:0)

您的代码应为:

<script>
$(document).ready(function(){
    $('.nextWeek').on('click', function(){
        $.post ('incrementWeek.php', function (response) {
            location.reload();
        });

       // location.reload(); // <-- remove this as it is not required
    });
});
</script>

并且

<?php
   session_start();
   if(isset($_SESSION['idn']))
   {
     $_SESSION['idn'] = $_SESSION['idn'] + 1;
   }
?>

答案 3 :(得分:-1)

要在javascript中使用php,你需要打开php

 <script>
  $(document).ready(function(){
    $('.nextWeek').on('click', function(){
    // dont do this 
     <?php  $_SESSION['idn']++; ?>
     // instead use a ajax 
      $.ajax({
    url: '/path/to/file',
    type: 'GET',
    data: {"session_increment":1},
    success:function(response){
        if(response==1)
        {
            location.reload();
        }
       }
     });
    });
   });

这将起作用,并将增加值