no hay buenas maneras de detener la solicitud en la red (como muchos han dicho), pero es relativamente fácil detener los efectos de la solicitud. es decir,
en el lado del servidor: puede exit
(o cualquier término que requiera para eliminar el script) constantemente comprobando las variables globales (que actúan como indicadores) como cookies o sesiones (una vez más, suponiendo que cambiarían durante el ejecución del guion). Además, puede mantener los archivos o las entradas de la base de datos como indicadores (que puede sondear para su existencia).
en el lado del cliente: puede llamar al abort
(que no funciona en todos los navegadores, como otros han dicho), o puede mantener un semáforo/bandera global en la parte superior de su devolución de llamada (que controla el valor para ver si aún se debe ejecutar o no). ejemplo:
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 razón sería para detener un proceso largo de sacrificar los recursos así que no es que ver con las modificaciones a un DB . THX para la respuesta – AndreLiem
Como menciona zombat a continuación, si se trata de un proceso largo, podría tener tiempo para hacer algo, pero identificar el hilo de Apache sería muy difícil. Tendría que configurar algún tipo de mecanismo de almacenamiento para vincular la ejecución de scripts a las solicitudes (lo que significa que las solicitudes deben incluir una identificación única de algún tipo). Si almacenó ese enlace en una base de datos, puede enviar una segunda solicitud para marcar la solicitud como cancelada, y luego sondear periódicamente ese registro de la base de datos de su secuencia de comandos en ejecución para ver si puede dejar de funcionar. Sería complicado y existe un gran potencial de error/actividad maliciosa. –