Сделать сессиюХранилище Ajax Json feed

Я пытаюсь выполнить очень простую процедуру, но не могу закончить из-за моих навыков и знаний. Что я получил => Я получаю 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/

Пожалуйста, внесите изменения с помощью скрипта, чтобы другие пользователи могли использовать код в качестве примера.

Очень ценю вашу помощь...

1 ответ

Решение

Вот как вы можете использовать хранилище сессий

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

Другие вопросы по тегам