考虑一个带有以下代码的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。关于如何解决这个问题的任何想法?
答案 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">