Число запросов на нумерацию страниц AJAX растет в геометрической прогрессии - PullRequest
0 голосов
/ 31 декабря 2011

У меня есть окно с несколькими (jQuery ajax) вкладками, в каждой из которых я показываю некоторую информацию о пользователе: отправленные, полученные сообщения, сделанные сообщения и сделанные комментарии.Мне нужно сделать несколько страниц, которые хорошо работают при переходе назад и вперед между страницами.Но на последних двух вкладках (написанные посты и комментарии) я вижу, что количество выполненных запросов увеличивается в геометрической прогрессии.Вот часть кода

if ($pageno != $lastpage) { 
   echo '<div class="item next_page" id="next_page_no_'.$nextpage.'">Siguiente</div>';
}

Код вызова jQuery работает нормально:

$(".display_messages").on("click", ".next_page", function(){
var pageno = $(this).attr('id').replace('next_page_no_','');
$.get('retrieve_messages_rec.php?pageno='+pageno,function(data) {
    $('.display_messages').html(data);
})
});

Код вызова jQuery работает не очень хорошо:

$(".show_last_posts").on("click", ".next_page_posts", function(){
var pageno = $(this).attr('id').replace('next_page_no_','');
var usr_id= <?php echo mysql_real_escape_string($_GET['usr_id']); ?>;
$.get('user_last_posts.php?pageno='+pageno+'&usr_id='+usr_id,function(data) {
    $('.show_last_posts').html(data);
})
});

Чтобы лучше понять, когда вы нажимаете «.next_page» в коде, работающем нормально, вы видите один запрос, выполняемый каждый раз, когда вы нажимаете.Но когда вы нажимаете «.next_page_posts» (во втором примере), вы получаете один запрос файла «user_last_posts.php» в первый раз, три запроса второго клика (для следующей пары сообщений), шесть запросов на переход ктретья страница, двенадцать для следующей, 24, затем и так далее.Почему это так?Достаточно ли показано здесь фрагментов кода, чтобы понять, где моя ошибка?Так как они в основном идентичны, почему в одних они работают нормально, а в других нет?Или я параноик и это нормально?Спасибо

1 Ответ

0 голосов
/ 14 октября 2012

Разница между .next_page_posts и .next_page..next_page связан с одним элементом, а .next_page_posts - с каждым сообщением.Сравните два селектора:

console.log( [".next_page_posts:",  $(".next_page_posts").length,  ".next_page:",  $(".next_page").length] )
...