我有一个 jquery 移动网络应用程序,其中包含使用单页架构的各种页面(每个 html 文件一页——我有多个 HTML 文件)。“page1”是最初加载的页面。我还有 4 个用于导航的其他选项卡 [page2、page3、page4 和 page5],它们都是从 page1 的菜单中预取的。
在几乎每个页面上,我都使用 AJAX 发布调用与我的应用程序进行交互。为了效率/可用性,我将内容保存到 localStorage。
page1 上的代码如下所示:
$(document).on('pageshow','#page1', function(){
var postTo = '../api/ajaxreturn.php';
$.post(postTo, function (data){
if (localStorage.getItem('ajaxreturn') == JSON.stringify(data)) return;
else {
localStorage.setItem('ajaxreturn',JSON.stringify(data));
//alert(localStorage.getItem('ajaxreturn'))
}
}, "json");//end post
//alert('hi')
}); // end page1
其他页面的编码类似。
我遇到的问题是在原始 webapp 文档加载时,信息没有保存到 localStorage。当我签入调试器时,我看到预取页面的所有 localStorage 数据都已保存。为了获得 page1 的 localStorage,我必须单击任何 page2/3/4/5,然后返回 page1。这会再次调用“pageshow”函数并且它可以工作。
更奇怪的是,当我取消注释警报('hi')时,如果我将警报保持几秒钟,数据确实会显示在 webapp 原始负载的 localStorage 中。
也许它与时间问题有关?比赛条件?但我知道 ajax 调用正在工作,因为如果我取消注释“alert(localStorage.getItem('ajaxreturn'))”我会看到实际内容..所以不确定它是什么。
任何帮助将不胜感激