Javascript Jquery Mobile AJAX post数据未保存到本地存储
我有一个jquery移动web应用程序,它使用单页架构(每个html文件一页——我有多个html文件)提供各种页面。“page1”是最初加载的页面。 我还有4个导航选项卡[page2、page3、page4和page5],它们都是从page1的菜单中预取的 在几乎每个页面上,我都使用AJAX post调用与我的应用程序交互。为了提高效率和可用性,我将内容保存到localStorage 第1页上的代码如下所示:Javascript Jquery Mobile AJAX post数据未保存到本地存储,javascript,jquery,jquery-mobile,local-storage,Javascript,Jquery,Jquery Mobile,Local Storage,我有一个jquery移动web应用程序,它使用单页架构(每个html文件一页——我有多个html文件)提供各种页面。“page1”是最初加载的页面。 我还有4个导航选项卡[page2、page3、page4和page5],它们都是从page1的菜单中预取的 在几乎每个页面上,我都使用AJAX post调用与我的应用程序交互。为了提高效率和可用性,我将内容保存到localStorage 第1页上的代码如下所示: $(document).on('pageshow','#page1', functio
$(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
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
<script src="js/jquery.swipeButton-1.2.1.js"></script>
<script src="js/ga.js"></script>
<script src="js/custom.js"></script>
其他页面的编码类似
我遇到的问题是,在原始webapp文档加载时,信息没有保存到localStorage。当我签入调试器时,我看到预取页面的所有本地存储数据都已保存。为了获得page1的本地存储,我必须单击任何page2/3/4/5,然后返回page1。这会再次调用“pageshow”函数,它会正常工作
更奇怪的是,当我取消对警报的注释(“hi”)时,如果我让警报保持几秒钟,数据确实会显示在webapp原始加载的localStorage中
也许这和时间问题有关?比赛条件?但是我知道ajax调用正在工作,因为如果我取消注释“alert(localStorage.getItem('ajaxreturn')”,我会看到实际的内容。。所以我不确定这是什么
任何帮助都将不胜感激修复它
所以问题与我发布的代码无关。这与我的头文件在HTML中的顺序有关
提示:严格遵守JQUERY移动指南
我错过了将自定义.js文件放在jquery.js和jquery.mobile.js之间的提示
我以前的代码如下所示:
$(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
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
<script src="js/jquery.swipeButton-1.2.1.js"></script>
<script src="js/ga.js"></script>
<script src="js/custom.js"></script>
当我将其更改为正确的方式时:
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/custom.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
<script src="js/jquery.swipeButton-1.2.1.js"></script>
<script src="js/ga.js"></script>
注意custom.js的位置(所有自定义脚本都是为项目编写的)
它解决了我的问题。所以一定要确保你的标题设置正确——这会让你省去很多时间的头疼。希望这能帮到你 尝试将您的警报(“hi”)移动到.post呼叫中。