1

json フィードからより多くの記事をロードする ajax/jquery リクエストについて、あなたの助けが必要です。

$(document).ready(function () {
var output = $('#news');
var count = "2";
var page = "1";
$.ajax({
    url: 'http://domain.com/api/get_recent_posts/?post_type=news&count=' + count + '&page=' + page + '&callback=?',
    async: false,
    callback: 'callback',
    crossDomain: true,
    contentType: 'application/json; charset=utf-8',
    type: 'POST',
    dataType: 'jsonp',
    timeout: 5000,
    success: function (data, status) {
        $.each(data.posts, function (i, item) {
            var news = '<li>' + item.title + '</li>';
            output.append(news);
        });

        if (data !== undefined && data !== undefined) {
            $('#stats').append('Page ' + page + ' of ' + data.pages + ' | Total posts ' + data.count_total + '');
        }

    },
    error: function () {
        output.html('<h1 class="error">There was an error loading the data.</h2>');
    }
});
});

必要なのは、リンクをクリックすると (さらに読み込む) ページに「var page = '2'」などのタイトルが表示されるはずですが、最後のページに到達するとリンクが消えるはずです。それが理にかなっていることを願っています。

以下のライブ フィドルを参照してください: http://jsfiddle.net/AGGjj/

よろしくお願いします。

4

2 に答える 2

2

答えを持っているすべての人のために:

$(document).ready(function () {

var output = $('#news');
var count = "2";
var page = "1";
var load = function() {
$.ajax({
    url: 'http://domain.com/api/get_recent_posts/?post_type=news&count=' + count + '&page=' + page + '&callback=?',
    async: false,
    callback: 'callback',
    crossDomain: true,
    contentType: 'application/json; charset=utf-8',
    type: 'POST',
    dataType: 'jsonp',
    timeout: 5000,
    success: function (data, status) {
        $.each(data.posts, function (i, item) {
            output.append($('<li />').text(item.title));
        });

        if (data !== undefined && data !== undefined) {
            $('#stats').text('Page ' + page + ' of ' + data.pages + ' | Total posts ' + data.count_total + '');
        }
        if (page == data.pages) {
             $("#loadmore").remove();
        }
        page++;

    },
    error: function () {
        output.html('<h2 class="error">There was an error loading the data.</h2>');
    }
});
};
//add click handler
$('#loadmore').click(function() {load();});
//load first page
$('#loadmore').trigger('click');
//or
load();
});
于 2013-03-08T13:08:38.437 に答える
0

成功関数の最後に追加

success: function (data, status) {
    $.each(data.posts, function (i, item) {
        var news = '<li>' + item.title + '</li>';
        output.append(news);
    });

    if (data !== undefined && data !== undefined) {
        $('#stats').append('Page ' + page + ' of ' + data.pages + ' | Total posts ' + data.count_total + '');
    //just test if the current page is the last one
    if(page == data.pages) {
       $('link selector').hide();
       or remove
       $('link selector').remove();

    }
    }

},
于 2013-03-08T12:19:34.487 に答える