如何在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值。

提前感谢!!

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

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;
}

最新更新