0

考虑具有以下代码的 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 。有想法该怎么解决这个吗?

4

1 回答 1

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

于 2013-07-27T14:55:23.353 回答