UPDATE AJAX + LARAVEL

1

I need to update my table VIEW when the user watches 90% of the video in Vímeo, but I can not use this logic with 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><scriptsrc="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>

Then inside the file ajax.php I can make my UPDATE . But I can not play this for Laravel ...

I tried this but it did not 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');
 }
    
asked by anonymous 27.09.2018 / 17:46

1 answer

0

You need to put the ajax.php code in your controller, but instead of echo you can only return the variable $jSON . By default laravel will convert your response to json.

    
10.10.2018 / 02:10