Определите, есть ли еще страницы для использования $ .post с использованием jQuery - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь реализовать функцию бесконечной прокрутки на веб-сайте.Есть div '#books' с несколькими div '.book' в нем.Пока все работает нормально:

alreadyloading = false;
nextpage = 1;

$(window).scroll(function() {
if ($('body').height() <= ($(window).height() + $(window).scrollTop())) {
    if (alreadyloading == false) {
        var url = "page"+nextpage+".html";
        alreadyloading = true;
        $('#books').append($('#loadinggif').fadeIn(200));
        $.post(url, function(data) {
            $('#books').append(data);
            alreadyloading = false;
            nextpage++;
            $('#loadinggif').fadeOut(200);
        });
    }
}
});

Однако #lodinggif остается внизу даже после загрузки всего контента.В любом случае я могу обнаружить, что pagex.html не существует, а затем скрыть #loadinggif?

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Если вы читаете документы для jQuery.post () , это говорит об обратном вызове:

успех (data, textStatus, jqXHR)
Функция обратного вызова, которая выполняется в случае успешного выполнения запроса.

Таким образом, вы не можете отловить ошибки с помощью $.post. Но вы можете поймать их, используя длинную форму jQuery.ajax () вместо сокращенной записи:

$.ajax({
    url: url,
    type: 'post',
    success: function(data, textStatus, jqXHR) {
        $('#books').append(data);
        nextpage++;
        alreadyloading = false;
        $('#loadinggif').fadeOut(200);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alreadyloading = false;
        $('#loadinggif').fadeOut(200);
    }
});
1 голос
/ 22 марта 2012

Сервер должен предоставить эту информацию в дополнение к данным.Таким образом, вы можете позволить серверу возвращать файл XML или JSON с данными и указывать, существует ли следующая страница.

...