为啥安卓小娜发送指令后一直在加载,还有为啥之前能用的笔记本现在不停加载?急求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥安卓小娜发送指令后一直在加载,还有为啥之前能用的笔记本现在不停加载?急求相关的知识,希望对你有一定的参考价值。

参考技术A 存储速度慢 参考技术B 网络问题? 参考技术C 换一个吧!

为啥加载所有项目后 CSS 加载器一直出现?

【中文标题】为啥加载所有项目后 CSS 加载器一直出现?【英文标题】:Why does the CSS loader keep appearing after all the items are loaded?为什么加载所有项目后 CSS 加载器一直出现? 【发布时间】:2021-11-30 10:17:13 【问题描述】:

我一直在使用 CodeIgniter 3.1.8 和 Twitter Bootstrap 4 开发在线 newspaper/blogging application

我目前正致力于通过 AJAX 加载更多帖子。

默认情况下,帖子是分页显示的,一次显示 12 个http://myblog.com/http://myblog.com/?page=2 等等。

在 Posts 控制器 (application\controllers\Posts.php) 我有

private function _initPagination($path, $totalRows, $query_string_segment = 'page')

    //load and configure pagination 
    $this->load->library('pagination');
    $config['base_url']             = base_url($path);
    $config['query_string_segment'] = $query_string_segment;
    $config['enable_query_strings'] = TRUE;
    $config['reuse_query_string']   = TRUE;
    $config['total_rows']           = $totalRows;
    $config['per_page']             = 12;

    if($this->Static_model->get_static_data()['has_pager'])
        $config['display_pages'] = FALSE;
        $config['first_link'] = FALSE;
        $config['last_link'] = FALSE;
        $config['prev_tag_open'] = '<li class="prev">';
        $config['prev_tag_close'] = '</li>';
        $config['next_tag_open'] = '<li class="next">';
        $config['next_tag_close'] = '</li>';
    

    if (!isset($_GET[$config['query_string_segment']]) || $_GET[$config['query_string_segment']] < 1) 
        $_GET[$config['query_string_segment']] = 1;
    
    $this->pagination->initialize($config);
    
    $limit  = $config['per_page'];
    $offset = ($this->input->get($config['query_string_segment']) - 1) * $limit;
    
    return array(
        'limit' => $limit,
        'offset' => $offset
    );


public function index()

    //call initialization method
    $config = $this->_initPagination("/", $this->Posts_model->get_num_rows());
    $data                  = $this->Static_model->get_static_data();
    $data['base_url']      = base_url("/");
    $data['pages']         = $this->Pages_model->get_pages();
    $data['categories']    = $this->Categories_model->get_categories();
    $data['search_errors'] = validation_errors();
    
    //use limit and offset returned by _initPaginator method
    $data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);
    $this->twig->addGlobal('pagination', $this->pagination->create_links());
    
    // featured posts
    if ($data['is_featured']) 
        $data['featured'] = $this->Posts_model->featured_posts();
        $this->twig->addGlobal('featuredPosts', "themes/$data['theme_directory']/partials/hero.twig");
    
    
    $this->twig->display("themes/$data['theme_directory']/layout", $data);
 

为了改为通过 jQuery Ajax 加载帖子,我有:

(function($) 

    var currentPage = 1;

    $('.pagination').hide();

    $(window).scroll(function() 
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) 
            loadMore();
        
    );

    function loadMore() 
        $.ajax(
                url: baseUrl + '?page=' + currentPage,
                type: 'GET',
                beforeSend: function() 
                    $('.loader').show();
                
            )
            .done(function(data) 
                $('.loader').hide();
                // Get post from page 2 onward
                if (currentPage >= 2) 
                    var posts = $(data).find('#postsContainer').html();
                
                // If there are no more posts, hide loader
                //  Otherwise, load more posts
                if (posts == 'undefined') 
                    $('.loader').hide();
                 else 
                    $('#postsContainer').append(posts);
                    currentPage = currentPage + 1;
                
            );
    

)(jQuery);

问题:

加载最后一篇文章后,如果我向上(或上下)滚动,加载器会反复显示和隐藏。


我做错了什么?如何修复此错误?

【问题讨论】:

如果这是唯一可以导致加载器显示和隐藏的代码,则显示和隐藏代码行正在执行。这意味着您的 loadMore 正在被调用。那么当发生这种情况时,如果使用 console.log 来显示 if 语句中的值,您会得到什么? @TimBrownlaw 看看 branch,这将有助于理解问题。根目录下也有 .sql 导出。 您尝试过什么解决问题的方法?这真的和 PHP 和 AJAX 有关吗? @NicoHaase 我自己发布了一个answer 【参考方案1】:

我通过使用null 初始化变量posts 并在显示加载程序之前确保posts 不是undefined 解决了这个问题:

(function($) 

    var currentPage = 2,
        maxPage = $('#postsContainer').data('max-page'),
        posts = null;

    $('.pagination').hide();

    $(window).scroll(function() 
        var toBottom = $(window).scrollTop() >= $(document).height() - $(window).height() - 25;

        if (toBottom && currentPage <= maxPage) 
            loadMore();
        
    );

    function loadMore() 
        $.ajax(
                url: baseUrl + '?page=' + currentPage,
                type: 'GET',
                beforeSend: function() 
                    if (typeof posts != 'undefined') 
                        $('.loader').show();
                    
                
            )
            .done(function(data) 
                $('.loader').hide();
                posts = $(data).find('#postsContainer').html();

                if (typeof posts != 'undefined') 
                    $('#postsContainer').append(posts);
                    currentPage = currentPage + 1;

                    if (currentPage > maxPage) 
                        $('#postsContainer').append('<p class="text-center text-muted">No more posts to load</p>');
                    
                
            );
    

)(jQuery);

在控制器中:

public function index()
  
    //call initialization method
    $config = $this->_initPagination("/", $this->Posts_model->get_num_rows());
    $data                  = $this->Static_model->get_static_data();
    $data['base_url']      = base_url("/");
    $data['pages']         = $this->Pages_model->get_pages();
    $data['categories']    = $this->Categories_model->get_categories();
    $data['search_errors'] = validation_errors();
    $data['posts'] = $this->Posts_model->get_posts($config['limit'], $config['offset']);
    $data['max_page'] = ceil($this->Posts_model->get_num_rows() / 12);

    $this->twig->addGlobal('pagination', $this->pagination->create_links());

    // Featured posts
    if ($data['is_featured']) 
      $data['featured'] = $this->Posts_model->featured_posts();
      $this->twig->addGlobal('featuredPosts', "themes/$data['theme_directory']/partials/hero.twig");
    

    $this->twig->display("themes/$data['theme_directory']/layout", $data);
  

在视图中:

<div id="postsContainer" data-max-page="max_page">

【讨论】:

以上是关于为啥安卓小娜发送指令后一直在加载,还有为啥之前能用的笔记本现在不停加载?急求的主要内容,如果未能解决你的问题,请参考以下文章

为啥vp连接却用不了

为啥手机同花顺安卓版没有成交额的?

为啥win10不能用安卓模拟器

请问为啥用ipad编辑的word文档,发送到安卓手机(通过企鹅)会无法下载无法在线预览?

为啥加载所有项目后 CSS 加载器一直出现?

在页面卸载 strophe.js 发送请求两次!为啥?