Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ajax и кэширование ответа (https://javascript.ru/forum/jquery/34056-ajax-i-kehshirovanie-otveta.html)

ololosh 19.12.2012 12:02

Ajax и кэширование ответа
 
Проблема в следующем: У меня есть кнопка. По нажатию на нее я аяксом посылаю запрос на сервер. Сервер возвращает мне большой массив. Я на клиентской стороне в кол-бек функции аякса в цикле заполняю табличку пришедшими от сервера данными и показываю ее в модальном окне.
Все это происходило при щелчке на кнопку...
Теперь я закрываю свое модальное окно...и снова жму на кнопку, что бы опять посмотреть на окошко с моими данными.
И вот тут проблема. Происходит ЕЩЕ 1 аякс запрос (я это вижу фаербагом). Сервер заново отрабатывает и возвращает мне те же самые данные (на сервере они редко меняются)
Можно как-то сделать, что бы запрос посылался только первый раз, а последующие разы данные брались из кэша, что ли

$(".konopka").click(function() {

$.ajax({
				url: "app=content",
				type: "POST",
                                cache: true,
				success: function(data) {
                                    //тут обрабатываю пришедшие данные
                                }
});

});

Sanda 19.12.2012 12:16

Создаём локальную переменную, в которую сохраняем данные в success запроса. Если переменная не пуста, вызываем callback без запроса к серверу, иначе запрашиваем данные.
(function () {
var cache
  , callback = function (data) {
    //тут обрабатываю пришедшие данные
  };
$('.knopka').click(
  function () {
    if (cache) { //data are already cached -
      callback(cache); //process them
    } else { //no data -
      $.ajax({ //request it,
        //...
        , success: function(data) {
          cache = data; //then save
          callback(cache); //and process
        }
      });
    }
  }
);
}());


Часовой пояс GMT +3, время: 01:54.