I am facing the issue that when I am posting a data using fetch API, I am getting the data posted twice.
my service-worker code
code is like this:
self.addEventListener('fetch', function(event) {
if(event.request.method === "POST" || event.request.method === "PUT" || event.request.method ==="CREATE" ){
return fetch(event.request);
};
if(event.request.method === "GET"){
event.respondWith(
caches.open(cacheName)
.then(function(cache) {
return cache.match(event.request).then(function (response) {
return response || fetch(event.request).then(function(response) {
// cache.put(event.request, response.clone());
return response;
});
});
})
);
}
})
and JS file code is like this:
let leaveRequestForm = document.getElementById('leave-request');
leaveRequestForm.addEventListener('submit',function (e){
e.preventDefault();
let formData = new FormData(leaveRequestForm);
fetch("https://myserver/api/leave-request/create-leave-request", {
method: 'post',
"headers": {
'id':id,
},
body: formData
}).then(function (res) {
if (res.status >= 200 && res.status < 400) {
var successMsg = "<div class='alert-success'>Your Request is Submitted Successfully. <br>Thanks</div>";
var target = _d.qs(".content-target");
target.innerHTML = successMsg;
return res.json();
} else {
console.log('Status Code: ' + response.status);
return;
}
}).then(function (resp) {
//process the response
})
});
What I am missing here? I can comment-out the code in service-worker return fetch(event.request);
, but I want to send the request through service worker as I plan to offlice submit
as well