Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

479
Views
¿Cómo enviar una solicitud AJAX PUT en la descarga de la página sin que se cancele?

Estoy tratando de enviar una solicitud PUT en el evento de unload , sin embargo, la solicitud siempre se cancela.

Las respuestas aquí sugieren que es

  1. no es posible: ¿Cómo realizar una llamada ajax en la descarga de la página?

  2. posible: ¿Cómo envío una solicitud AJAX al descargar/salir de la página?

¿Puedo enviar una solicitud de AJAX al descargar? Si es así, ¿cómo puedo hacerlo sin que me cancele?

Nota: No me importa la respuesta, no necesito una respuesta. Solo necesito enviar información al servidor diciendo que la página se cerró sin controles de mantenimiento.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Todo lo que necesita hacer es hacer que la llamada ajax sea síncrona. De esa forma, el navegador esperará la respuesta antes de cerrar la ventana/pestaña y no se cancelará.

 $(window).unload(function(){ $.ajax({ type: 'PUT', url: '/your_url.php', async:false, //IMPORTANT, the call will be synchronous data: {} }).done(function(data) { console.log('complete'); }); });
over 4 years ago · Santiago Trujillo Report

0

Los navegadores están deshabilitando activamente la realización de llamadas ajax estándar en un controlador de descarga de página, porque esperar a que se complete retrasa lo siguiente que sucede en la ventana (por ejemplo, cargar una nueva página). Aunque no puede hacer PUT con él, el reemplazo de ajax síncrono en los controladores de descarga es sendBeacon . sendBeacon le permite enviar datos a su servidor sin detener la página en la que lo está haciendo:

 window.addEventListener("unload", function() { navigator.sendBeacon("/log", yourDataHere); });

El navegador enviará los datos sin impedir/retrasar lo que esté pasando en la ventana (cerrarla, pasar a una nueva página, etc.).

Las balizas son POST, no PUT, pero aparte de eso, es exactamente lo que está buscando.

Tenga en cuenta que el evento de unload puede no ser confiable, particularmente en dispositivos móviles. También puede combinar lo anterior con el envío de una baliza sobre el cambio de visibilitychange .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!