2011-12-28 52 views
1

请耐心等待,我需要帮助。如何使服务器在异步设置时确认浏览器状态

在我的网站:

  1. 的index.php - 显示这种形式20个链接:

    $result = mysql_query("my query"); 
    
    while($slice = mysql_fetch_assoc($result)){ 
        $url = $slice['url']; 
        $perf = $slice['perf']; 
    
        <a class="ajaxquery" data-title="<? echo $perf; ?>" href="$<? echo $url ?>">anchor</a> 
    
    endwhile; 
    
  2. 如果有人点击了20个链接之一,我有这样的AJAX代码,看哪个是哪个$perf被点击,发送数据到session.php

    function ajaxsession(){ 
        $("a.ajaxquery").click(function() { 
         var perf = $(this).data('title'); 
         $.ajax({ type: "POST", url: "/session.php", data: "perf="+perf, success: function(html){ $("#results").append(html); } }); 
        }); 
    } 
    
  3. 此代码发送以下内容session.php

    session_start(); 
    $_SESSION['perf'] = $_POST['perf']; // Store session data 
    
  4. 而且我single.php页面上我调用存储在会话变量:

    echo $_SESSION['perf']; 
    

single.php我得到正确的$perf只要我回到index.php使用主页链接

如果我使用的浏览器后退箭头回到index.php,那么$perf没有使用onclick jQuery代码更新。

您对此有何想法?我在想,也许我应该以某种方式销毁会话,一旦达到single.php。这是一个好主意吗?

+0

我想你已经回答了你自己的问题,因为后退按钮不是你的点击处理程序的一方。你考虑过COOKIE或SESSION吗?或者以其他方式在服务器上存储当前状态以供服务器使用,而无需往返? – 2011-12-28 02:56:01

+0

我只是一个新手:(我似乎无法完成此工作 – webmasters 2011-12-28 03:00:46

+0

建议(与您的问题无关):用'data:{perf:perf}'替换'data:“perf =”+ perf'或*你*必须确保这个值是正确的url编码(你想避免的 - 特别是当它很容易) – ThiefMaster 2011-12-28 03:03:20

回答

0

'返回按钮'通常会返回并加载页面的缓存副本。如果您需要在用户“返回”该页面时自动重新加载该“前一页”页面,则必须在第一次加载时发送该页面时没有缓存标头。