如何通过重新加载/刷新页面来执行调用页面?
逻辑:如果用户成功登录,则页面将使用HTML5存储作为数据移动到管理员页面。
例如:sessionStorage.setItem('MyID','12345');
如果成功登录,则字符串12345将被带到管理员页面。但是制作12345的过程来自登录表单。
要在管理员页面上阅读我使用的数据:sessionStorage.getItem('MyID')
。
我遇到的问题是当jQuery mobile制作翻页时,管理员页面无法读取数据,虽然我必须输入数据读出功能块:$(document).ready(function())
但是,如果我执行刷新/重新加载管理员页面,则手动数据然后正确读取
我用过:
function callAdmin(){
$.mobile.changePage("admin.html");
}
如何使用刷新页面或重新加载页面进行调用页面?或者是否有另一种方法可以将数据结果发送到管理员页面?
答案 0 :(得分:2)
这里的主要问题是文档就绪。这是一个常见的jQuery Mobile问题,您无需刷新页面即可阅读sessionStorage。
您需要做的是使用正确的jQuery Mobile页面事件。文档就绪应该只用于基本的jQuery。在jQuery Mobile的情况下,它通常会在页面成功加载到DOM之前触发。
如果您想了解更多相关信息,请阅读我的其他答案: jQuery Mobile: document ready vs page events
你在 jQuery 中学到的第一件事就是在 $(document).ready()函数中调用代码,这样一旦DOM被加载就会执行所有内容。但是,在 jQuery Mobile 中,Ajax用于在导航时将每个页面的内容加载到DOM中。因为这个 $(document).ready()将在加载第一个页面之前触发,并且每个用于页面操作的代码将在页面刷新后执行。这可能是一个非常微妙的错误。在某些系统上,它似乎可以正常工作,但在其他系统上可能会导致不稳定,难以重复的怪异。
经典jQuery语法:
$(document).ready() {
});
要解决这个问题(相信我这是一个问题) jQuery Mobile 开发人员创建了页面事件。简而言之,事件是在特定页面执行中触发的事件。其中一个页面事件是 pageinit 事件,我们可以像这样使用它:
$(document).on('pageinit', function(){
});
我们可以更进一步,使用页面ID而不是文档选择器。假设我们有jQuery Mobile页面,其id为 index :
<div data-role="page" id="index">
<div data-theme="a" data-role="header">
<h3>
First Page
</h3>
<a href="#second" class="ui-btn-right">Next</a>
</div>
<div data-role="content">
<a href="#" data-role="button" id="test-button">Test button</a>
</div>
<div data-theme="a" data-role="footer" data-position="fixed">
</div>
</div>
要执行只能用于索引页面的代码,我们可以使用以下语法:
$('#index').on('pageinit') {
});