Всем добрый день.
Есть каталог, который в по ajax подтягивает данные из БД. Нужно реализовать задержку, чтобы пользователь не мог отсылать более одного запроса
в 3 секунды и если за 3 секунды произошел еще один запрос к БД, то старый запрос обнулялся.
Вот Код:
var ajax_timer;
function pl_perehod_data(){
href=$(this).attr('href');
page_num=$(this).closest('.page_lister').find('input').val();
clearTimeout(ajax_timer);
ajax_timer=setTimeout(function(element){
$.ajax({ type: 'POST',dataType: 'json', url:"../php_scripts/catalogs_tools.php",
data:({href:href,page_num:page_num, task:"take_page_data_perehod"}),context: element,
success: function(data){
block=$(this).closest('.page_lister').parent();
block.find('.page_lister').replaceWith($(data.lister_body));
block.find('.catalog').replaceWith($(data.catalog_body));
}})
},3000,$(this))
}
$(document).ready(function() {
$('body').on('click','.personal_card .opener',cat_open_close_card);
$('body').on('click','.page_lister a',pl_get_link_data);
$('body').on('click','.page_lister .js_perehod',pl_perehod_data);
})
Вопрос по Метке ajax_timer, ее приходится выносить в глобальную область. Есть какой-то вариант, чтобы он хранился в функции как статическая переменная,
или есть способ еще проще без Таймаута?