我在页面上有一个ajax post loader。调用它的链接如下所示:
b
这是ajax:
<div class="load_more_cont">
<p align="center">
<a href="http://www.example.com/category/books/page/5/" title="Load more"><span class="fa fa-angle-down fa-fw button" aria-hidden="true"></span></a>
</p>
</div>
它工作正常但是当我到达该类别的第5页(如上面的第5页书籍)时,我收到404错误。如果我在浏览器中加载类别URL没有问题 - 第5页和第6页都存在并加载。一切都在同一台服务器上。如果我没有选择一个类别,所以网址看起来像这个$('.load_more_cont a').on('click', function(e)
{
e.preventDefault();
//how many posts per page
var posts_per_page = 12;
//set button to contain spinning loading icon
$(this).html('<span class="fa fa-refresh fa-spin fa-fw loading" aria-hidden="true">');
console.log($(this).attr('href') + '#main_container');
$.ajax({
type: "GET",
url: $(this).attr('href') + '#main_container',
dataType: "html",
success: function(out)
{
//result of query
result = $(out).find('#load_posts_container .home_post_box');
//append result to posts container
$('#load_posts_container').append(result).masonry( 'appended', result, true );
//find the next link in the returned result
nextlink = $(out).find('.load_more_cont a').attr('href');
//if (nextlink != undefined)
if (result['length'] == posts_per_page)
{
//add the next link to the load more button
$('.load_more_cont a').attr('href', nextlink);
$('.load_more_cont a').html('<span class="fa fa-angle-down fa-fw button" aria-hidden="true">');
}
else
{
//remove the load more button and add a clearing div
$('.load_more_cont').remove();
$('#load_posts_container').append('<div class="clear"></div>');
}
},
error: function(xhr, ajaxOptions, thrownError){
console.log(xhr.status);
console.log(thrownError);
}
});
});
那么它也可以正常工作。知道问题可能是什么?
答案 0 :(得分:1)
你的if条件没有意义imo:if (result['length'] == posts_per_page)
。如果您有多个posts_per_page项目,则会出现分页链接,如果更多或相等,则不会出现。如果页面上有5个项目posts_per_page = 5
,则表示没有下一页。
如果你在最后一页,通常不应该有分页链接,所以检查应该是那样的
if ($(out).find('.load_more_cont a').length > 0) { ...
我的猜测是,您在最后一页上有posts_per_page
项内容,并设置了undefined
的下一个链接,从而导致错误。
答案 1 :(得分:0)
解决方案是将wordpress中的每页帖子设置(我设置为16),帖子的显示方式(我每页显示12个)以及如何处理404(通过索引)的组合。 php而不是404.php页面)。因此从某种意义上说,从GET获得404完整页面是完全正确的,即使它看起来像是一个矛盾。一旦我给了wordpress一个404.php页面,我就能分开问题,然后跟踪由于每页设置而导致页面计数不正确。