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, время: 15:57. |