我想在循环中检查一些值,所以我创建和网络工作进程,如果该值是真的,那么我停止网络工作人员并重新加载页面,所以这是我的问题,我在获取查询中一直没有结果。我不明白哪里错了。
这是主页上的主要js:
$.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>`
);
}
})
如您所见,我试图将 id 和 token 传递给我的 Fingerwait.js,以便我可以用它进行一些查询。这是我的 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);
所以每隔 3 秒我想执行并从数据库中获取该检索数据,如果数据存在我 postMessage('ok'),如果不存在我 postMessage('belum')。现在的问题是,即使数据库中存在数据,我仍然不断收到“belum”。所以我认为 Fingerwait.js 有问题,但我不确定哪里出了问题
这是我检查数据库数据的函数
public function cekFinger($id)
{
$data = fingerprint::where('pengajar_id', $id)->first();
if ($data == null) {
return response('no', 406);
} else {
return response('ok', 200);
}
}
所以我尝试使用 self.addEventlistener 到 Fingerwait.js,我认为问题是我的 id 和 token 没有传递到 Fingerwait.js,但如果是这样,那么我的 fecth 将被捕获错误,但事实并非如此,所以我别无选择,不知道该怎么办
所以我还没有找到网络工作者获取的解决方案,我将 Fingerwait.js 移动到我的主页,并为 gif 动画设置超时网络工作。
$('#submitfinger').on("click", function() {
$.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;
setInterval(() => {
fetch(`{{ url('') }}/cek-pengajar-finger/${id}`, {
method: 'GET',
headers: {
"X-CSRF-Token": token
},
}).then(function(response) {
if (response.status == 200) {
let test = $('#icon-gif').attr({
trigger: 'in',
delay: '1000',
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 {
postMessage('belum');
}
}).catch(function(err) {
postMessage(err);
})
}, 3500);
}).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>`
);
}
})
})
});