如何在不刷新当前页面上的Youtube视频的情况下获取数据

时间:2018-04-29 20:22:01

标签: javascript php jquery ajax

我正在开发一个PHP应用程序,我在我的网站上播放YouTube视频。每个视频的URL,start_time和end_time都存储在数据库中,每30秒后,如果current_time在任何行的start_time和end_time之间,则检查数据库中的所有值,如果是,则从该行获取URL并开始视频。

$retrieval = "select * from video where user_id=$id AND prog_id=$p";    
$result= mysqli_query($db,$retrieval);

if(mysqli_num_rows($result)>0){
    while($row = mysqli_fetch_assoc($result)){
      $fromTime = strtotime($row['start_time']);
      $toTime = strtotime($row['end_time']);
      $inputTimeT = strtotime($currTime);
      if($inputTimeT >= $fromTime and $inputTimeT <= $toTime){
           $url = $row['video_url'];
           if(preg_match('/https:\/\/(www\.)*youtube\.com\/.*/',$url)){
                // Fetch YouTube VideoID from URL
                preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match);
                $youtube_id = $match[1];
       ?>
           <iframe class="mainvideo" src="https://www.youtube.com/embed/<?php echo $youtube_id?>?autoplay=1&loop=1&playlist=<?php echo $youtube_id?>" frameborder="0" allowfullscreen></iframe>
            <?php 
            }
            else{?>
                <video width="100%" src="<?php echo $row['video_url']?>" controls loop autoplay>
          <!--ALTERNATE VIDEOS   -->
               </video>
          <?php  }
           } 
        }
  }

如果我每分钟刷新一次页面,视频将从开始播放(如果时间不到)。 我希望每分钟都执行此操作,而无需重新加载页面,也无需重新加载当前播放的YouTube视频(如果时间不到时)。如果可能,请为此问题提供可能的解决方案。

P.S。我已经验证了存储到数据库时的开始和结束时间,因此每个视频都有独特的开始和结束时间,并且它们不会超载。

1 个答案:

答案 0 :(得分:0)

无论什么时候想要在不重新加载负载的情况下获取数据,AJAX都可以提供帮助。

我会做什么(不知道最佳做法,甚至是不良做法)是:

  1. 在其他一些php文件中创建我的服务器代码
  2. 将数据发送到该文件(如有必要)并使用ajax
  3. 检索数据
  4. 在javaScript中对HTML页面进行更改