GetJson不会一直返回json结果

时间:2013-03-30 20:37:39

标签: jquery json cordova jquery-mobile

使用最新的jquery mobile(“http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js)和jquery(http://code.jquery.com/jquery-1.9.1.min.js)和我的pagecreate事件大部分时间都可以工作,但是,如果我单击后退按钮然后尝试刷新页面,没有显示任何内容。我可以看到使用FireBug发生的请求,但我看不出为什么页面上没有设置json结果。

谢谢!

$(document).on("pagecreate", "#checkout51", function(event, ui) {
thisPage = $(this);
loadPageContent("checkout51.html", function(data) {
    $(thisPage).prepend(data);
});
});

$(document).on("pageshow", "#checkout51", function(event, ui) {
    $.mobile.loadingMessage = "Please wait - loading coupons ...";
  var couponslist = $('#couponslist');
  $.mobile.showPageLoadingMsg();
  var url = "http://www.test.com/request.php?";
  $.getJSON(url, {
        limit: "100",
    coupon_source : "Checkout51"
    }, function (data) {
            var listContent = "";
            listContent += "<li data-role='list-divider'>Checkout51 Coupons</li>";
    $.each(data, function(index, value){
            listContent += "<li><h2><a class='ui-link-inherit' href='coupondetails.html?id=" + value.coupon_id + "'>" + value.name + "</a></h2></li>";
    });
    $('#couponslist').empty().append(listContent).listview('refresh');
   })
    .error(function() { alert("Error while request processing"); })
    .complete(function() { 
  $.mobile.hidePageLoadingMsg()
    });
});

将其用作HTML:

<div class="fixed-header" data-position="fixed" data-tap-toggle="false" data-role="header" data-theme="b">
    <a href="#" data-theme="b" class='ui-btn-left' data-icon='arrow-l'>Back</a>
    <h1>Checkout51 Coupons</h1>
    <a href="#" data-role="button" data-theme="b" data-icon="home" data-iconpos="notext"></a>
</div>
<div data-role="content" data-theme="c"><br /><ul id="couponslist" data-role="listview" role="listbox"></ul><br /></div>
<div data-role="footer" data-position="fixed" data-id="footer"><div data-role="navbar"><ul><li><a href="index.html" id="menu1" data-role="button" data-icon="home">Home</a></li>     <li><a href="search.html" id="menu2" data-role="button" data-icon="search">Search</a></li><li><a href="subscribe.html" id="menu3" data-role="button" data-icon="info">Subscribe</a></li></ul></div></div><!-- /footer -->

我很感激任何帮助 - 这是针对Phonegap应用程序的,但我需要看到这一点一直使用浏览器。

1 个答案:

答案 0 :(得分:1)

首次创建页面时,

pagecreate只会触发一次。如果您希望每次在浏览器上加载页面时触发事件,则必须考虑pageshow。如果要在向用户显示页面之前加载json请求,请考虑使用pagebeforeshow

了解不同类型的events available in JQM here