Javascript Jquery Mobile AJAX post数据未保存到本地存储

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

我有一个jquery移动web应用程序,它使用单页架构(每个html文件一页——我有多个html文件)提供各种页面。“page1”是最初加载的页面。 我还有4个导航选项卡[page2、page3、page4和page5],它们都是从page1的菜单中预取的

在几乎每个页面上,我都使用AJAX post调用与我的应用程序交互。为了提高效率和可用性,我将内容保存到localStorage

第1页上的代码如下所示:

$(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呼叫中。