我已经尝试了多种方法来尝试多次更新这个会话变量(即使其在每次点击时增加而不仅仅是第一次),但它不起作用。
<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变量也没有更新。语法上有什么问题吗?答案 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();
}
}
});
});
});
这将起作用,并将增加值