Il n'y a pas de bons moyens pour arrêter la demande elle-même sur le réseau (comme beaucoup l'ont dit), mais il est relativement facile d'arrêter les effets de la demande. sur le côté serveur: vous pouvez exit
(ou quel que soit le terme dont vous auriez besoin pour tuer le script) en vérifiant constamment les variables globales (agissant comme des drapeaux) comme les cookies ou les sessions (encore une fois, en supposant qu'elles changeraient pendant le exécution du script). En outre, vous pouvez conserver les fichiers ou les entrées de base de données en tant que drapeaux (que vous pouvez interroger pour l'existence). Côté client: vous pouvez appeler abort
(ce qui ne fonctionne pas dans tous les navigateurs, comme d'autres l'ont dit), ou vous pouvez garder un sémaphore global/drapeau en haut de votre rappel (qui vérifie le global valeur pour voir si elle devrait encore être exécutée ou non). exemple:
window.ajaxIsStillGood = true;
xhr.onreadystatechange = function()
{
if(4 === xhr.readyState && 200 === xhr.status)
{
if(true === window.ajaxIsStillGood){ /* still good */ }
}
}
/* bad stuff happens */
window.ajaxIsStillGood = false; // now the code won't execute
la raison serait d'arrêter un processus long de prendre des ressources afin de ne pas vraiment faire avec des modifications à un DB . merci pour la réponse – AndreLiem
Comme le mentionne zombat ci-dessous, si c'est un long processus, vous pourriez avoir le temps de faire quelque chose, mais identifier le thread Apache serait très difficile. Vous devez configurer un mécanisme de stockage pour lier les scripts en cours d'exécution aux requêtes (ce qui signifie que les requêtes doivent inclure un identifiant unique). Si vous avez stocké ce lien dans une base de données, vous pouvez envoyer une deuxième requête pour marquer l'annulation de la demande, puis interroger périodiquement cet enregistrement de base de données à partir de votre script en cours d'exécution pour voir si vous pouvez arrêter de travailler. Ce serait très compliqué et il y a beaucoup de potentiel d'erreur/activité malveillante. –