как изменить div, когда ajax-запрос не возвращает данных - PullRequest
0 голосов
/ 28 января 2012

Я использую jquery / ajax, чтобы получить больше, когда просмотр на 40% прокрутке.

Вот скрипт запроса;

$(document).ready(function(){
    var fetching = false;

        function lastPostFunc() {
            fetching = true;
                $('div#loadmorebutton').html('<a>Loading...pls wait</a>');
                $.post("loadmore.php?id=1&lastid="+$(".postitem:last").attr("id"),

        function(data){
            if (data != "") {
                    $(".postitem:last").after(data);
                        setTimeout(function(){
                        fetching = false;
                        },300);
                        $('div#loadmorebutton').empty();
                    } 
            });
        };


$(window).scroll(function(){
    var bufferzone = $(window).scrollTop() * 0.40;
    if (!fetching && ($(window).scrollTop() + bufferzone > ($(document).height()- $(window).height() ) )){
    lastPostFunc();
    } 
}); 

});

И загрузка большего числа div;

<div id="loadmorebutton">Loading...pls wait</div>

Все отлично работает, нокогда он достигает последнего контента или больше нет контента для загрузки, я хочу, чтобы "Loading ... pls wait" изменился на что-то вроде "Нет больше контента для загрузки".На данный момент он остается прежним "Загрузка ... пожалуйста, подождите".Что я должен делать?

NB.Следующий скрипт работает и выполняет переход от «загружать больше» к «больше не загружать контент».Причина, по которой я не использую этот сценарий, заключается в том, что он запускается только при достижении нижней части экрана, что приводит к двойной загрузке или тройной загрузке.Пробовал комбинировать коды, но все равно не работает.

$(window).scroll(function(){
        if($(window).scrollTop() == $(document).height() - $(window).height()){
            $('div#loadmorebutton').show();
            $.ajax({url: "loadmore.php?id=01&lastid=" + $(".postitem:last").attr("id"),
        success: function(html){
                    if(html){
                        $("#postswrapper").append(html);
                        $('div#loadmorebutton').hide();
                    }else{
                        $('div#loadmorebutton').html('<a>No more posts to show.</a>');
                    }
                }
            });
        }
    });

1 Ответ

0 голосов
/ 28 января 2012

Я думаю, что вы получите сообщение с сервера, когда контента больше не будет. Коды сервера .Когда вы получите это, вы сможете установить сообщение на основе этого.Проверьте полные настройки при запуске AJAX.Ищите это '(jqXHR, textStatus)' здесь: Свойства AJAX , которые должны возвращать сообщение, установить правило, затем вы можете обновить DOM.

...