Ajax и кэширование ответа
Проблема в следующем: У меня есть кнопка. По нажатию на нее я аяксом посылаю запрос на сервер. Сервер возвращает мне большой массив. Я на клиентской стороне в кол-бек функции аякса в цикле заполняю табличку пришедшими от сервера данными и показываю ее в модальном окне.
Все это происходило при щелчке на кнопку... Теперь я закрываю свое модальное окно...и снова жму на кнопку, что бы опять посмотреть на окошко с моими данными. И вот тут проблема. Происходит ЕЩЕ 1 аякс запрос (я это вижу фаербагом). Сервер заново отрабатывает и возвращает мне те же самые данные (на сервере они редко меняются) Можно как-то сделать, что бы запрос посылался только первый раз, а последующие разы данные брались из кэша, что ли $(".konopka").click(function() { $.ajax({ url: "app=content", type: "POST", cache: true, success: function(data) { //тут обрабатываю пришедшие данные } }); }); |
Создаём локальную переменную, в которую сохраняем данные в 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. |