Parece que no puedo obtener los datos de la solicitud de publicación de Beacon API para poder guardarlos en mi tabla de logs . Si no hay soporte para Beacon API, recurro a una solicitud de AJAX. La URL es correcta. Puedo enviar una solicitud AJAX, pero parece que navigator.sendBeacon no funciona para mí. Aquí está mi código js:
// Wait for the DOM to be ready $(function() { function sendAnalytics() { if (navigator.sendBeacon) { let logVisit = function() { // Test that we have support if (!navigator.sendBeacon) return true; // URL to send the data to, eg let url = $('#conference-wrapper').data('url'); // Data to send let data = new FormData(); data.append('status', 'left'); // Let's go! navigator.sendBeacon(url, data); }; window.addEventListener('beforeunload', logVisit); } else { var data = {}, url = $('#conference-wrapper').data('url'); if(typeof url !== 'undefined' && url !== ''){ data.status = 'left'; $.ajax({ method: "POST", url: url, dataType: "json", data: data }).done(function(response) { console.log('done'); console.log(response); }).fail(function(response) { console.log('fail'); console.log(response); }); } } } window.addEventListener('beforeunload', function() { sendAnalytics(); }); });Mi ruta en web.php:
Route::post('{id}/participant-left', 'MyController@onParticipantLeft')->name('my.controller.participant.left');Mi controlador:
public function onParticipantLeft(Request $request) { Log::create([ 'status' => $request->status, ]); }¿Qué estoy haciendo mal?