i want to check some value in a loop so i make and web worker process, if that value is true then i stop the web worker and reload the page so here's my problem, i kept getting no result in my fetch query. i don't understand where the wrong part is.
here the main js on main page :
$.post('{{ url('') }}/input-data-finger', $("#finger-form").serialize())
.done(function(response) {
var myModal = new bootstrap.Modal(document.getElementById('loadfinger'), {
keyboard: false
})
myModal.show();
let id = $('#nama').val();
let token = document.querySelector('input[name=_token]').value;
var work = new Worker("/js/fingerwait.js");
work.postMessage([id,token]);
work.onmessage = function(event) {
if (event.data == 'ok') {
work.terminate();
work = undefined;
let test = $('#icon-gif').attr({
trigger: 'in',
delay: '2000',
state: 'morph-correct'
});
$('#fingernotif').text('Data Fingerprint Berhasil Di Daftarkan');
$('#fingernotif-2').text('Page Akan Refresh Secara Otomatis');
work = new Worker("/js/fingerdone.js");
work.onmessage = function(response) {
if (response.data == 'ok') {
work.terminate();
work = undefined;
location.reload();
}
}
} else {
console.log(event.data);
}
}
}).fail(function(response) {
var data = JSON.parse(response.responseText);
if (data.errors.nama_pengajar != null) {
$('.err_nama').empty().append(
`<span class="text-danger" style="font-size:15px">${data.errors.nama_pengajar}</span>`
);
}
if (data.errors.jadwal_pengajar != null) {
$('.err_jadwal').empty().append(
`<span class="text-danger" style="font-size:15px">${data.errors.jadwal_pengajar}</span>`
);
}
})
so as you can see, im trying to pass the id and token to my fingerwait.js so i can do some query with it. and here's my fingerwait.js
var id_p;
var token;
const cekInterval = setInterval(() => {
onmessage = (e) => {
id_p = e.data[0];
token = e.data[1];
}
fetch(`{{ url('') }}/cek-pengajar-finger/${id_p}`, {
method: 'GET',
headers: {
"X-CSRF-Token": token
},
}).then(function (response) {
if (response == 'ok') {
postMessage('ok');
} else {
postMessage('belum');
}
}).catch(function (err) {
postMessage(err);
})
}, 3000);
so every 3 seconds i want to execute and fetch that retreive data from database, and if the data exists i postMessage('ok'), and if doesn't exists i postMessage('belum'). now here's the problem i kept getting 'belum' even though the data is exist on the database. so i assume there's something wrong in the fingerwait.js but i am not sure where
and here is my function to check the data on database
public function cekFinger($id)
{
$data = fingerprint::where('pengajar_id', $id)->first();
if ($data == null) {
return response('no', 406);
} else {
return response('ok', 200);
}
}
so i tried to use self.addEventlistener to the fingerwait.js, i thought the problem was my id and token doesn't get pass on to the fingerwait.js, but if so then my fecth would be cacthing an error but it hasn't so i am out of option and don't know what to do