簡體   English   中英

Ajax中的無限滾動

[英]Infinite scroll within Ajax

所以,我在我的Wordpress網站上啟用了Ajax,如下所示:

將保存所選div中任何錨點內的id並用於查找適當的php文件,然后在適當的內容div中加載。

PHP

<!--Menu part -->
 <div class="royal_front_menu">
      <a href="#rcp_front_front_id" class="mdl-tabs__tab is-active" id="front_id">All</a>       
      <a href="#rcp_front_electronic_id" class="mdl-tabs__tab" id="electronic_id">Electronics</a>         
</div>

<!--Content Part-->
<div class="active" id="rcp_front_front_id">  
     <div class="spinner"></div>
</div>
<div class="not_active" style="display:none;" id="rcp_front_electronic_id"> 
     <div class="spinner"></div> 
</div>      


<script>
//Ajax loading
jQuery(document).ready(function() {
    jQuery('.royal_front_menu a').click(function(e) {
        e.preventDefault();

        var tab_id = jQuery(this).attr('id'); 

        jQuery.ajax({
            type: "GET",
            url: "<?php echo admin_url('admin-ajax.php'); ?>", 
            dataType: 'html',
            data: ({ action: 'royal_front_tab', id: tab_id}),
            success: function(data){
                  jQuery('#rcp_front_' + tab_id).html(data);


        },
        error: function(data)  
        {  
        alert("Error!");
        return false;
        }  

        }); 

 }); 
 });
</script>

FUNCTION.PHP

//Ajax call for front page for Mobile
function royal_front_tab_rhm_callback() {  
     $template_part_path = 'page-parts/rhm/front/01_front_menu_' .  $_GET['id'];
get_template_part($template_part_path);
exit;
}
 add_action('wp_ajax_royal_front_tab_rhm', 'royal_front_tab_rhm_callback');
 add_action('wp_ajax_nopriv_royal_front_tab_rhm', 'royal_front_tab_rhm_callback');

01_front_menu_front_id.php

<div class="content">
    <?php echo do_shortcode('[Post_Shortcode]'); ?> 
</div>

到現在為止還挺好...

因此,通過以下設置,一切正常。 只有在點擊等時才會調用所有內容。太棒了!

但是,我正在嘗試添加一個功能: 無限滾動

到目前為止我做了什么:

我按照以下說明操作: http//wptheming.com/2012/03/infinite-scroll-to-wordpress-theme/

所以,我在一個單獨的虛擬網站上嘗試了這個,看看它在搞亂之前是如何工作的。

設定

將以下內容添加到function.php

// To add infinitescroll js
function custom_theme_js(){
    wp_register_script( 'infinite_scroll',  get_template_directory_uri() . '/custom_js/jquery.infinitescroll.min.js', array('jquery'),null,false );
    wp_enqueue_script('infinite_scroll');

}
add_action('wp_enqueue_scripts', 'custom_theme_js');

//To add selectors
function custom_infinite_scroll_js() {
    { ?>
    <script>
    jQuery('.royal_card.site-row-fluid.site-grid-list').infinitescroll({
        navSelector  : jQuery('.site-pagination'),
        nextSelector : jQuery('.site-pagination > a.next'),
        itemSelector :  '.royal_card.site-row-fluid.site-grid-list > .royal_card_outer.royal_card_content_grid',
        contentSelector: jQuery('.royal_card.site-row-fluid.site-grid-list'),
    msgText: "Yay"  
    },function(newElements){
        jQuery('.site-separator').remove();
        jQuery('.royal_card.site-row-fluid.site-grid-list > .royal_card_outer.royal_card_content_grid').after('');
     });
    </script>
    <?php
     }
 }
add_action( 'wp_footer', 'custom_infinite_scroll_js',100 );

當我在虛擬站點(沒有Ajax)上嘗試這個時,它工作正常。 我可以將下一頁內容視為infinite scroll

虛擬站點的"Normal" URL是這樣的:

 <a class="page-numbers" href="http://example.com/page/2/">2</a>

問題

所以,通過Ajax頁面,我發現了一些奇特的東西。 頁面網址變得有點奇怪:

 <a class="page-numbers" href="http://example.com/wp-admin/admin-ajax.phppage/2/?action=royal_front_tab&amp;id=front_all_id">2</a>

因為它不是normal URL,所以它會導致“404”頁面,因為它不存在。

這是我的猜測

我認為jQuery('.royal_front_menu a').click(function(e) {其中royal_front_menu div中的任何錨點都會受到影響。但是內容是在div之外加載的。

好吧,我很困惑為什么會這樣。

有什么建議么?

對我來說似乎沒有添加/在admin-ajax.php之后,如果你嘗試進入下面的鏈接它會給你一個有效的頁面嗎?

<a class="page-numbers" href="http://example.com/wp-admin/admin-ajax.php/page/2/?action=royal_front_tab&amp;id=front_all_id">2</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM