【问题标题】:How do I fetch data without refreshing Youtube video on current page如何在不刷新当前页面上的 Youtube 视频的情况下获取数据
【发布时间】:2018-04-29 20:22:00
【问题描述】:

我正在开发一个 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 视频(如果时间未到)。如果可能,请提供此问题的可能解决方案。

附:我在存储到数据库时验证了开始和结束时间,所以每个视频都有唯一的开始和结束时间,它们不会重叠。

【问题讨论】:

  • 你使用了正确的标签;你试过的代码在哪里?
  • 通常你会做的是在一个单独的文件中通过 PHP 从数据库中获取视频的逻辑,然后使用 AJAX 解析和检索原始文件和处理文件之间的数据的PHP。然后,您可以在任何时间加载视频。或者,您可以在 AJAX 中围绕视频构建所有内容。这样您就可以 100% 控制要刷新的内容和不刷新的内容。

标签: javascript php jquery ajax


【解决方案1】:

好吧,只要您想在不重新加载负载的情况下获取数据,AJAX 就可以提供帮助。

我会做的(不知道是最佳做法还是坏做法)是:

  1. 在其他 php 文件中制作我的服务器代码
  2. 将数据发送到该文件(如有必要)并使用 ajax 检索数据
  3. 在 JavaScript 中更改 HTML 页面

【讨论】:

  • 好吧,我尝试在视频标签上使用 jQuery AJAX 加载,还将服务器代码复制到不同的文件上,但每 5 秒刷新一次视频,而不是页面。如果视频与当前正在播放的视频相同,我不希望它被刷新。
猜你喜欢
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2023-02-26
  • 2017-06-13
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多