J'ai eu du mal à écrire du code qui fera une demande POST de manière fiable à la fermeture de la fenêtre de l'onglet. Navigator.sendBeacon
semble être exactement ce dont j'ai besoin (je ne demande que cela fonctionne pour Google Chrome).Appel d'une requête POST pour la journalisation à partir de la fenêtre de déchargement
$(global).bind('unload', function() {
let body = {
UserEmail: appState.user.email,
Job: {
Id: appState.jobId
},
Timestamp: '/Date(' + new Date().getTime() + ')/',
EventOrigin: 'PdfReviewClient',
Event: 'JobClosed'
};
let headers = {
Authorization: `JWT ${authenticationState.token}`,
'Content-Type': 'application/json; charset=utf8'
};
let blob = new Blob([JSON.stringify(body)], headers);
navigator.sendBeacon(configuration.rootApiUrl + 'jobevents', blob);
});
Ma balise inclut des en-têtes personnalisés, c'est pourquoi je crée un blob.
Cependant, cette demande ne semble pas se produire. Ceci est particulièrement difficile à déboguer puisque la fenêtre se ferme. Donc, la question est, pourquoi ma balise n'envoie pas?
Je suppose que vous avez vérifié que la demande se produit lorsque * not * n'est pas fait à la fermeture du navigateur? – Jorg
@Jorg Oui, j'ai. Bonne pensée, merci de vérifier, mais ce n'est pas le problème dans ce cas. –
Et le déchargement se déclenche lui aussi? Vous pourriez être en mesure de le tester avec un 'alert' pour voir s'il bloque la fermeture de la fenêtre – Jorg