代码之家  ›  专栏  ›  技术社区  ›  Aaron McAdam

仅当数据尚未缓存时才显示加载微调器

  •  0
  • Aaron McAdam  · 技术社区  · 16 年前

    目前,我的代码显示一个加载微调器gif,返回数据并缓存它。但是,一旦数据被缓存,在加载数据之前,加载gif会闪烁一秒钟。它让人分心,我想把它处理掉。我想我用错方法了 beforeSend 此处的函数:

    $.ajax({
                    type    : "GET",
                    cache   : false,
                    url     : "book_data.php",
                    data    : { keywords : keywords, page : page },
                    beforeSend : function() {                   
                        $('.jPag-pages li:not(.cached)').each(function (i) {                        
                            $('#searchResults').html('<p id="loader">Loading...<img src="../assets/images/ajax-loader.gif" alt="Loading..." /></p>');
                        });
                    },
                    success : function(data) {  
                        $('.jPag-current').parent().addClass('cached');
                        $('#searchResults').replaceWith($(data).find('#searchResults')).find('table.sortable tbody tr:odd').addClass('odd');
                        detailPage();
                        selectForm();                   
                    }
                });
    

    编辑:

    var timeout =  setTimeout(function(){ 
                $('#searchResults').html('<p id="loader">Loading...<img src="../assets/images/ajax-loader.gif" alt="Loading..." /></p>');
              }, 500 ); 
                $.ajax({
                    type    : "GET",
                    cache   : false,
                    url     : "book_data.php",
                    data    : { keywords : keywords, page : page },
                    beforeSend : function() {   
                        timeout;
                    },
                    success : function(data) {  
                        clearTimeout(timeout);
                        $('.jPag-current').parent().addClass('cached');
                        $('#searchResults').replaceWith($(data).find('#searchResults')).find('table.sortable tbody tr:odd').addClass('odd');
                        detailPage();
                        selectForm();                   
                    }
                });
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Yisroel    16 年前

    您可以将加载的gif延迟四分之一秒左右,这样就不会显示它是否从缓存加载。