2017-07-28 101 views
2

我在頁面上有一個ajax帖子加載器。調用它的鏈接看起來是這樣的:ajax頁面加載器404錯誤

<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> 

,這是AJAX:

$('.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); 
    } 
}); 
}); 

它工作的很好,但是當我到達的類別5頁(如圖書5頁以上)我收到一個404錯誤。如果我在瀏覽器中加載類別url沒有問題 - 第5頁和第6頁都存在並加載。一切都在同一臺服務器上。如果我不選擇一個類別,所以url看起來像這樣http://www.example.com/page/5/那麼它也可以正常工作。任何想法可能是什麼問題?

+1

您是否檢查過$(this).attr('href')'以確保它返回正確的路徑?您可以通過console.log($(this).attr('href'));'在控制檯中進行打印,或者您可以使用開發工具中的網絡部分監控ajax調用。 – NewToJS

+0

這就是我發佈的代碼。 – garrettlynch

+0

它是否顯示正確的路徑?你有沒有在開發工具中檢查網絡?它必須是一個錯別字,因爲404意味着它不存在。嘗試從通話中刪除'#main_container'。 – NewToJS

回答

0

解決方案是wordpress中的每頁帖子設置(我已設置爲16),帖子顯示方式(每頁顯示12個)以及404如何處理(按索引.php而不是404.php頁面)。所以從某種意義上說,從整個頁面獲得404的404是完全正確的,儘管它看起來像是一個矛盾。只要我給wordpress一個404.php頁面,我就能夠分開這些問題,然後跟蹤由於每頁設置導致的頁面計數不正確。

1

如果您的條件在這裏沒有意義,請點擊: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的下一個鏈接會導致錯誤。

+0

條件'if(result ['length'] == posts_per_page)'是正確的。結果僅返回每頁12個,因此檢查它是否與其完全相同,如果是這樣,則消除鏈接是正確的。但是,你說的12頁在頁面上並不意味着有下一頁。我忽略了這樣的情況,換掉了這個if(nextlink!=「」)'的條件(類似於你發佈的內容),這意味着我可能會丟失posts_per_page。無論如何,這不是問題。對第5頁的請求是一貫失敗的 - 第5頁有12項(整頁),第6頁有4項。 – garrettlynch