Javascript 不能使用AJAX/PHP多次递增会话变量

Javascript 不能使用AJAX/PHP多次递增会话变量,javascript,php,jquery,ajax,session,Javascript,Php,Jquery,Ajax,Session,我尝试了几种方法多次尝试和更新此会话变量(即,使其在每次单击时递增,而不是仅在第一次单击时递增),但它不起作用 <script> $(document).ready(function(){ $('.nextWeek').on('click', function(){ $.post ('incrementWeek.php', function (response) { location.reload(); });

我尝试了几种方法多次尝试和更新此会话变量(即,使其在每次单击时递增,而不是仅在第一次单击时递增),但它不起作用

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

        location.reload();
    });
});
</script>
我尝试使用警报来查看变量是否发生了变化,但它保持不变。在第一次页面加载之后,AJAX(我想?)甚至不承认我正在单击“nextWeek”类按钮。页面未重新加载表示位置。未执行重新加载()

欢迎提出任何意见


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

$\u会话['idn']+
不正确。您应该这样做:

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

要在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();
        }
       }
     });
    });
   });

$(文档).ready(函数(){
$('.nextWeek')。在('click',function()上{
//不要这样做
//而是使用ajax
$.ajax({
url:“/path/to/file”,
键入:“GET”,
数据:{“会话增量”:1},
成功:功能(响应){
如果(响应==1)
{
location.reload();
}
}
});
});
});


这将起作用,并将增加值

设置会话变量中的值后需要重定向

按照这种逻辑,由于您使用ajax调用设置会话,您将无法在服务器端重定向到任何url,因此您的会话变量没有设置

我认为您需要出于某种目的重用某个地方的链接点击数,您可以在这里做的另一个解决方案是在相同的ajax服务器端php文件(即incrementWeek.php)中设置点击数,但不要使用会话,而是尝试在php中使用cookie。您的代码应该是:

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

$(文档).ready(函数(){
$('.nextWeek')。在('click',function()上{
$.post('incrementWeek.php',函数(响应){
location.reload();
});

//location.reload();//首先,您必须了解客户端编程和服务器端编程之间的区别。Javascript可能在客户端计算机上运行,而会话在服务器端。了解区别。您可以向服务器上的某个php函数发出ajax请求来完成您的工作,并向您返回一些输出。这是唯一的可能性。For要设置会话变量的值,您需要在服务器端设置会话变量后重定向到url。因为您正在使用ajax调用进行设置,并且无法在此处从服务器端重定向到url,所以您的会话变量未设置。您需要根据需要使用其他方法.或$\u会话['idn']=$\u会话['idn']+1;@Meenesh-我怀疑这是否可行,因为您试图在客户端增加服务器端变量。您可以在页面加载时在客户端使用任何服务器端变量,但不能在javascriptYeah@RakeshLampStack中进一步处理客户端的服务器端变量,我同意您的意见,然后使用ajax增加会话变量可以,并且当您的请求成功执行时,重新加载页面并对帖子进行更改,然后尝试此服务器端
 <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();
        }
       }
     });
    });
   });
<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;
   }
?>