Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载时,在页面加载后使用占位符或动画加载div_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 加载时,在页面加载后使用占位符或动画加载div

Javascript 加载时,在页面加载后使用占位符或动画加载div,javascript,jquery,ajax,Javascript,Jquery,Ajax,第一个帖子在这里。 我是php新手,所以请友好一点:) 我有一个div,它为一个循环进行各种api调用。(仅供参考,这是一张股票市场公司的表格,我需要获取每个公司的当前价格)。当然,这会大大降低页面速度。我想先加载页面的其余部分,在它获取数据时有一个占位符/动画(这是一个额外的功能) 仅供参考,如果有帮助的话,我正在使用引导 例如: <li class="clear"> <d

第一个帖子在这里。 我是php新手,所以请友好一点:)

我有一个div,它为一个循环进行各种api调用。(仅供参考,这是一张股票市场公司的表格,我需要获取每个公司的当前价格)。当然,这会大大降低页面速度。我想先加载页面的其余部分,在它获取数据时有一个占位符/动画(这是一个额外的功能)

仅供参考,如果有帮助的话,我正在使用引导

例如:

                        <li class="clear">
                            <div style="width:50%; float:left;">
                                <div class="item-avatar" style="display:inline-block">
                                    <a href="<?php bp_group_permalink() ?>"><?php bp_group_avatar( 'type=thumb&width=40&height=40' ) ?></a>
                                </div>
                                <div class="item" style="display:inline-block">
                                    <div class="item-title"><a href="<?php bp_group_permalink() ?>"><?php bp_group_name() ?></a></div>                                  
                                </div>
                            </div>  
                            <div style="width:50%; float:left;">
                                <div class="item-meta">
                                        <div class="critix-score">
                                            <?php $groupid = bp_get_group_id(); ?>
                                            <?php echo get_totoal_avg_critix($groupid); ?>%
                                        </div>                                          
                                        <?php
                                        $group_id = bp_get_group_id();
                                        $setting = groups_get_groupmeta( $group_id, 'incao_info_tab_meta' );
                                        ?>                      
                                        <?php if(isset($setting['incao_trading_url']) && !empty($setting['incao_trading_url']) && !empty($setting['incao_ico_price'])){ ?>                                                                                                                                          
                                                <?php 
                                                $cmc_id = $setting['incao_trading_url'];
                                                $phi = 'https://api.coinmarketcap.com/v2/ticker/'.$cmc_id.'/';                      
                                                $current_price = shell_exec('curl -s "'.$phi.'" | egrep -i price | cut -d : -f2 ');         
                                                $ico_price = $setting['incao_ico_price'];
                                                $ico_roi = $current_price / $ico_price; ?>
                                                    <?php if ($ico_roi > 1) { ?>
                                                            <div class="eth-roi alert-success" style=""><?php //echo (round($ico_roi,1)); ?>X</div> 
                                                    <?php } else { ?>
                                                            <div class="eth-roi alert-danger" style=""><?php //echo (round($ico_roi,1)); ?>X</div>                                                                                                          
                                                    <?php }
                                         } else {?>             
                                                <div class="eth-roi">--</div>
                                        <?php } ?>
                                </div>
                            </div>
                        </li>
                        <?php endwhile; ?>
  • %
    如果希望在页面加载后执行api调用,则需要AJAX。PHP是一个预处理器脚本,在页面加载时运行

    因此,您可以显示加载动画,该动画将在收到api请求数据后立即替换

    这可以帮助您朝着正确的方向前进:

    $(文档).ready(函数(){
    $.ajax({
    url:url,
    成功:功能(数据){
    $('.load-after-page-load with-spinning animation').html(data.price);
    }
    });
    });
    
    。正在加载{
    宽度:60px;
    高度:60px;
    边框顶部颜色:#0060a1;
    边框顶部样式:实心;
    边框顶部宽度:3倍;
    边界半径:50%;
    -webkit动画:旋转1s线性无限;
    动画:旋转1s线性无限;
    }
    @-webkit关键帧旋转{
    0% {
    -webkit变换:旋转(0度);
    }
    100% {
    -webkit变换:旋转(360度);
    }
    }
    @关键帧旋转{
    0% {
    变换:旋转(0度);
    }
    100% {
    变换:旋转(360度);
    }
    }

    我认为这是可行的,但请注意我的内联注释,因为它揭示了一些可能不是您想要的PHP变量。如果是这样,您将需要一种不同的方法。如果有任何结果,请告诉我。如果没有,您可以在Javascript打印任何错误时检查浏览器控制台;)

    另外,您可能希望将CSS移动到样式表中,我不建议移动Javascript,因为现在它只在以下情况下加载:
    if(isset($setting['incao\u trading\u url')&&!empty($setting['incao\u trading\u url')&!empty($setting['incao\u ico\u price'))
    返回
    true

    <li class="clear">
      <div style="width:50%; float:left;">
        <div class="item-avatar" style="display:inline-block">
          <a href="<?php bp_group_permalink(); ?>"><?php bp_group_avatar( 'type=thumb&width=40&height=40' ); ?></a>
        </div>
        <div class="item" style="display:inline-block">
          <div class="item-title">
            <a href="<?php bp_group_permalink(); ?>"><?php bp_group_name(); ?></a>
          </div>
        </div>
      </div>
      <div style="width:50%; float:left;">
        <div class="item-meta">
          <div class="critix-score">
            <?php $group_id = bp_get_group_id(); ?>
            <?php echo get_totoal_avg_critix($group_id); ?>%
          </div>
          <?php
            //$group_id = bp_get_group_id(); // WAS ALREADY DECLARED BUT WITHOUT '_', I ADDED THE UNDERSCORE TO THE FIRST ONE !!
            $setting = groups_get_groupmeta( $group_id, 'incao_info_tab_meta' );
          ?>
          <?php if (isset($setting['incao_trading_url']) && !empty($setting['incao_trading_url']) && !empty($setting['incao_ico_price'])) : ?>
    
            <?php
              $cmc_id = $setting['incao_trading_url'];
              $phi = 'https://api.coinmarketcap.com/v2/ticker/'.$cmc_id.'/';
            ?>
    
            <style>
              /* THIS PIECE OF CSS IS RESPONSIBLE FOR THE LOADING ANIMATION .. */
              .loader {
                width: 60px;
                height: 60px;
                border-top-color: #0060a1;
                border-top-style: solid;
                border-top-width: 3px;
                border-radius: 50%;
                -webkit-animation: spin 1s linear infinite;
                animation: spin 1s linear infinite;
              }
              @-webkit-keyframes spin {
                0% {
                  -webkit-transform: rotate(0deg);
                }
                100% {
                  -webkit-transform: rotate(360deg);
                }
              }
              @keyframes spin {
                0% {
                  transform: rotate(0deg);
                }
                100% {
                  transform: rotate(360deg);
                }
              }
            </style>
    
            <div id="price-showing-after-page-load">
              <div class="loader"></div>
            </div>
    
            <?php
            /**
             * SINCE THE NEXT PIECE OF JAVASCRIPT IS EXECUTED CLIENT SIDE,
             * IT REVEALS $phi (and $cmc_id), $setting['incao_ico_price'] and API 'price' value !!
             * WOULD THAT BE AN ISSUE ?? OTHERWISE WE NEED A DIFFERENT APPROACH !!
             */
            ?>
            <script>
              $(document).ready(function() {
                $.ajax({
                  url: <?php echo $phi; ?>,
                  dataType: 'json',
                  success: function(data) {
                    let ico_roi = data.price / <?php echo $setting['incao_ico_price']; ?>;
                    let div = document.createElement('div');
                    if (ico_roi > 1) {
                      $(div)
                        .addClass('eth-roi alert-success')
                        .html('<?php //echo (round($ico_roi,1)); ?>X');
                    } else {
                      $(div)
                        .addClass('eth-roi alert-danger')
                        .html('<?php //echo (round($ico_roi,1)); ?>X');
                    }
                    $('#price-showing-after-page-load').html(div);
                  }
                });
              });
            </script>
    
          <?php else : ?>
            <div class="eth-roi">--</div>
          <?php endif; ?>
        </div>
      </div>
    </li>
    
  • % /*这段CSS负责加载动画*/ .加载器{ 宽度:60px; 高度:60px; 边框顶部颜色:#0060a1; 边框顶部样式:实心; 边框顶部宽度:3倍; 边界半径:50%; -webkit动画:旋转1s线性无限; 动画:旋转1s线性无限; } @-webkit关键帧旋转{ 0% { -webkit变换:旋转(0度); } 100% { -webkit变换:旋转(360度); } } @关键帧旋转{ 0% { 变换:旋转(0度); } 100% { 变换:旋转(360度); } } $(文档).ready(函数(){ $.ajax({ 网址:, 数据类型:“json”, 成功:功能(数据){ 让ico_roi=data.price/; 设div=document.createElement('div'); 如果(ico_roi>1){ $(分区) .addClass(“eth-roi警报成功”) .html('X'); }否则{ $(分区) .addClass(“eth-roi警报危险”) .html('X'); } $(“#页面加载后显示价格”).html(div); } }); }); --

  • 在上面的代码中,您没有共享任何与API调用或jQuery相关的内容。您想添加这些以便我们可以帮助您吗?您是否有正在使用的Jquery功能。因为我想你会想先装上。一旦加载了这些脚本,就可以调用php脚本。更新问题,我们可以提供帮助。@Darian jquery已经加载。嗨,谢谢你的帮助,我不太清楚它与$(document).ready(function(){$.ajax({url:url,success:function(data){$('.load-after-page-load-with-spinning-animation')).html(data.price);}}});实际的api调用会去哪里?嗨,我没有使用php而是使用jQuery来进行api调用。查看有关jQueryAjax的文档。我希望这有帮助;)嗨,我迷路了,你有兴趣帮我一次性付款吗?我很乐意帮你,我会在这个周末再看一次,我有时间。我不需要任何东西,应该不会太难;)我会付钱给你的!我花了几个小时阅读如何让它工作。。。您可以查看上面的web url$cmc_id是股票代码,静态并手动保存在my db中$ico_价格是my db中的一个静态值$咖喱