首页 > 解决方案 > 如何在laravel中使用ajax更新视频播放当前时间

问题描述

<script> 
  var vid = document.getElementById("player"); 
  $(function() {
    var timeout;
    $("#player").on("playing pause", function(e) {
      // Save reference
      var v = this

      // Clear previous timeout, if any
      clearTimeout(timeout)

      // Call immediately if paused or when started
      performaction(v.currentTime, v.duration)
      
      // Set up interval to fire every 5 seconds
      if (e.type === "playing") {
        timeout = setInterval(function() {
          performaction(v.currentTime, v.duration)
        }, 5000)
      }
    })
  
    function performaction(currentTime, duration) {
      console.log(currentTime);
      console.log(' ajax action goes here');
      var data = { pause_time : currentTime };
      $.ajax({
        type: "POST",
        url: '/instructor/promo_video/84',
        data: data,
        success: function() {
          console.log("Value added");
        }
      })
    }
  })
</script>

在我的数据库中,我有一个视频表,其中的列名为pause_time. 现在,如果我将此 js 代码用于视频当前播放时间,那么我将在控制台中获得 5 秒间隔后的时间。我想在 laravel 中使用 ajax 将这个时间发送到数据库。以及如何currentTime在控制器中取值。

提前致谢!!

标签: mysqlajaxlaravel

解决方案


如果您创建了一个视频表,那么您应该制作一个视频模型:

php artisan make:model Video

当你在前端使用 POST 方法时,你也需要传递一个 CSRF 令牌。

const data = {
  _token: YOUR_TOKEN,
  pause_time : currentTime,
};

要从数据库中获取数据,您应该使用 ORM,因此:

$video = Video::where(SOME_CONDITIONS, value)->first();
$currentTime = $video->pause_time;

要从前端获取数据,您应该使用 $request:

public function yourController(Request $request)
{
    $currentTime = $request->pause_time;
}

推荐阅读