1
I need to update my table VIEW
when the user watches 90% of the video of Vímeo, but I cannot use this logic with the Laravel
.
I have this following code in PHP
normal:
<div class="meu_iframe">
<iframe src="https://player.vimeo.com/video/41578877" width="640" height="360" frameborder="0" allowfullscreen></iframe>
</div>
<!-- Inclusão jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://player.vimeo.com/api/player.js"></script>
<script type="text/javascript">
$(function(){
//inclusão do plugin
if($('.meu_iframe').length){
//aqui faz a captura do iframe
var iframe = document.querySelector('iframe');
//aqui inicia o plugin do vimeo
var player = new Vimeo.Player(iframe);
//aqui faz a chamada do evento on e solicita o 'play'(indica que o vídeo foi startado)
//existe outros parametros como pause, ended, timeupdate...
player.on('play', function(tempo) {
//aqui captura o tempo total do vídeo
var tempoTotal = tempo.duration;
//aqui captura o percentual em execução do vídeo
var percentAssistido = tempo.percent;
//aqui captura os segundos em execução do vídeo
var segundosAssistido = tempo.seconds;
console.log(tempoTotal);
//essa funcao conta o tempo do vídeo e depois envia um post pro arquivo php
setTimeout(function () {
$.post('ajax.php', {tempo_video: tempoTotal}, function (data) {
if(data.atualizado){
alert("Tabela atualizada no banco");
}
}, 'json');
}, (Math.trunc(tempoTotal) * 1000));
});
}
});
</script>
There inside the archive ajax.php
can make my UPDATE
. But I can’t play this for the Laravel
...
I tried that but it didn’t work.
View
<script type="text/javascript">
$(function(){
//inclusão do plugin
if($('.meu_iframe').length){
//aqui faz a captura do iframe
var iframe = document.querySelector('iframe');
//aqui inicia o plugin do vimeo
var player = new Vimeo.Player(iframe);
//aqui faz a chamada do evento on e solicita o 'play'(indica que o vídeo foi startado)
//existe outros parametros como pause, ended, timeupdate...
player.on('play', function(tempo) {
//aqui captura o tempo total do vídeo
var tempoTotal = tempo.duration;
//aqui captura o percentual em execução do vídeo
var percentAssistido = tempo.percent;
//aqui captura os segundos em execução do vídeo
var segundosAssistido = tempo.seconds;
console.log(tempoTotal);
//essa funcao conta o tempo do vídeo e depois envia um post pro arquivo php
setTimeout(function () {
$.post('{{route('ajaxview')}}', {tempo_video: tempoTotal}, function (data) {
if(data.atualizado){
alert("Tabela atualizada no banco");
}
}, 'json');
}, (Math.trunc(tempoTotal) * 1000));
});
}
});
</script>
Route
$this->post('ajax', 'SchoolController@ajaxView')->name('ajaxview');
Control
public function ajaxview(Request $request)
{
return view('school.salavirtual.ajaxview');
}
Put here the code of your ajax.php
– Kayo Bruno
He is recognizing this code ($. post('{route('ajaxview')}}') as a route from the Laravel? makes a test and tries to switch to $.post('/ajax').....
– Cesar Vinicius
Code from my ajax.php <? php //When the video ends javascript will send a post to that file. Here you recover with the name you passed inside the $.post $json = null; $timeDoVideo = $_POST['tempo_video']; //In this file you update in the database and if you want to send a return, just initialize the $json $json['updated'] = true; //can send values back to another tbm if ($json){ echo json_encode($json); }
– Ari Lima