阻止jQuery Mobile缓存页面

时间:2013-07-27 01:41:35

标签: jquery ajax caching mobile

考虑一个带有以下代码的page1.php文件:

<?php
session_start();
if (isset($_SESSION['var'])) unset($_SESSION['var']);
?>
<html>
<head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
</head>
<body>
    <div data-role="page">
        <div data-role="content">
            <?php echo $_SESSION['var']; ?>
            <a href="page2.php">next page</a>
        </div>
    </div>
</body>
</html>

带有以下代码的page2.php:

<?php
session_start();
$_SESSION['var']++;
?>
<html>
<head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
</head>
<body>
    <div data-role="page">
        <div data-role="content">
            <?php echo $_SESSION['var']; ?>
            <a href="page1.php">previous page</a>
        </div>
    </div>
</body>
</html>

我想要获得的结果是当你点击链接转到page2.php,然后在page2.php上刷新页面几次,然后点击链接转到page1.php,然后再次单击链接转到page2.php,计数器应该回到开头。所以基本上,转到page1.php重置计数器并转到page2.php递增它。

然而,实际发生的事情是我去page2.php并刷新它几次,计数器就像应该的那样上升,然后当我回到page1.php并返回page2.php时,计数器仍然是相同。但是当我现在刷新页面时,它确实会回到开头。显然会话变量正在工作,并且正在设置和取消设置,但似乎jQuery正在缓存页面。这也没有意义,因为默认情况下data-dom-cache(http://jquerymobile.com/demos/1.2.0/docs/api/data-attributes.html)属性设置为false。关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我只需将此添加到page2.php即可使其正常工作:

<script type="text/javascript">
$(document).on('pagehide', 'div', function (event, ui) { 
    var page = jQuery(event.target);
    if (page.attr('data-cache') == 'never') { 
        page.remove(); 
    }; 
});
</script>

并将<div data-role="page">更改为<div data-role="page" data-cache="never">