2013-03-14 86 views
1

我想实现一个非常简单的程序,但不能完成,因为我的技能和知识。 我得到了什么=>我从服务器检索json feed,它工作正常。做sessionStorage的Ajax Json饲料

我需要做什么=>尽快的JSON提要检索其添加到sessionStorage的,所以当我将复出此页面再次数据(在同一会话中)应该被从sessionStorage的,而不是从服务器提取通过Ajax。希望它确实有道理。

代码:

$(document).ready(function() { 

if (window.sessionStorage.getItem("weather") === null) { 

    $.ajax({ 
     url: 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D24553463%20and%20u%20%3D%20"c"&format=json&diagnostics=true', 
     async: false, 
     callback: 'callback', 
     crossDomain: true, 
     contentType: 'application/json; charset=utf-8', 
     type: 'POST', 
     dataType: 'jsonp', 
     timeout: 5000, 
     success: function (data, status) { 
      if (data !== undefined && data.query.results.channel !== undefined) { 
       $('#weather').append('<div class="wcode">' + data.query.results.channel.item.condition.code + '</div><div class="temperature">' + data.query.results.channel.item.condition.temp + '°C</div><div class="details">' + data.query.results.channel.wind.speed + '/с<br/>' + data.query.results.channel.atmosphere.pressure + '<br/>' + data.query.results.channel.atmosphere.humidity + '% humid.</div>'); 
      } 
      var output = $('#weather'); 
      window.sessionStorage.setItem("weather", JSON.stringify(output)); 
     } 
    }); 

} else { 
    var jsData = window.sessionStorage.getItem("weather", JSON.stringify(output)); 
} 
}); 

小提琴是在这里:http://jsfiddle.net/j8QGv/

拨弄请做修改,以便其他用户可以使用该代码作为例子。

非常感谢您的帮助...

+0

你真的想要的数据对象或只是HTML? – 2013-03-14 22:03:22

+0

我想整个html块。 – qqruza 2013-03-14 22:07:43

+0

对于sessionStorage来说,它不会是一个大量的数据存储。 – qqruza 2013-03-14 22:08:24

回答

2

继承人如何您可以使用会话存储

if (window.sessionStorage.getItem("weather") === null) { 

    $.ajax({ 
     url: 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D24553463%20and%20u%20%3D%20"c"&format=json&diagnostics=true', 
     async: false, 
     callback: 'callback', 
     crossDomain: true, 
     contentType: 'application/json; charset=utf-8', 
     type: 'POST', 
     dataType: 'jsonp', 
     timeout: 5000, 
     success: function (data, status) { 
      if (data !== undefined && data.query.results.channel !== undefined) { 
       $('#weather').append('<div class="wcode">' + data.query.results.channel.item.condition.code + '</div><div class="temperature">' + data.query.results.channel.item.condition.temp + '°C</div><div class="details">' + data.query.results.channel.wind.speed + ' м/с<br/>' + data.query.results.channel.atmosphere.pressure + ' мм рт. ст.<br/>' + data.query.results.channel.atmosphere.humidity + '% влаж.</div>'); 
      } 
      var output = $('#weather').html(); // get the HTML 
      window.sessionStorage.setItem("weather", output); // store it in session 
     } 
    }); 

} else { 
    // this isn't how you use the getter method 
    //var jsData = window.sessionStorage.getItem("weather", JSON.stringify(output)); 
    var jsData = window.sessionStorage.getItem("weather"); 
    $('#weather').html(jsData); 
} 

FIDDLE

+0

非常感谢。你是超级明星! – qqruza 2013-03-15 09:40:32