单击链接时更改会话变量

时间:2014-04-04 19:01:07

标签: javascript php ajax variables session

这是此处问题的扩展 - Create a new page for different php ORDER BY statement?

我基本上需要更改会话变量并使用php(我认为)同时刷新页面。

即。当我点击页面上的<a href="#">Sort by date<a>时,会发生以下情况:

  • $_SESSION['orderby']; = 'date';

  • 页面刷新

然后会更改会话变量并在我的代码中稍后使用。

我可能需要使用javascript?我不太确定,我该怎么做?

修改

我不希望/需要重定向到另一个页面,只需要刷新页面。基本上我需要点击链接(或按钮),需要更改php变量。

AJAX可能吗?

2 个答案:

答案 0 :(得分:1)

您可以做的是将GET - 值附加到URL并使用PHP获取该值。

例如:

<!-- HTML -->
Sort by <a href='?sort=date'>date</a>

// PHP:
if (isset($_GET['sort'])) {
    $_SESSION['orderby'] = $_GET['sort'];
}

此外,您可以检查GET - 值是否在给定数组中(以避免来自url操作的错误):

if (isset($_GET['sort'])) {
    $sorts = array('date', 'ranking', 'page'); // ...
    $_SESSION['orderby'] = (in_array($_GET['sort'], $sorts) ? $_GET['sort'] : 'STANDARD SORT');
}

答案 1 :(得分:0)

使用ajax将你的var发送到php文件以更新会话

$.ajax({
      type: 'POST',
      url: 'date.php',
      data: {'date':date},
      success: function(result) {
       console.log(result)
      } 
    });

date.php

<?php
   session_start();
    if(isset($_POST['date'])){
      $_SESSION['date'] = $_POST['date'];
      echo 'Date set to: '.$_SESSION['date'];
      }
    }