2013-03-14 88 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