Tengo que hacer una solicitud ajax sincrónica en el evento beforeunload, pero arroja un error ya que la solicitud ajax sincrónica no es compatible con los navegadores chromium durante los eventos de descarga de página.
¿Cuál podría ser la alternativa para realizar una solicitud ajax síncrona durante el ciclo del evento de descarga de la página?
window.on('beforeunload',function(){ $.ajax({ url:'@Url.Action("ActionName","ControllerName")', async:false, data:formData, success:function(){ //Success logic }, error:function(){ //Failure logic } }); });DOMException: no se pudo ejecutar 'enviar' en 'XMLHttpRequest': no se pudo cargar:
Nota: navigator.sendBeacon() es asíncrono de forma predeterminada, pero necesito tener una solicitud síncrona en el despido de la página.
¿Alguna sugerencia?
Synchronous XMLHttpRequest ha quedado obsoleto, puede consultar este documento . Blink eliminó la compatibilidad con la sincronización XHR de los eventos de cierre de página ( beforeunload de descargar y unload ) y simplemente ya no puede hacerlo en los navegadores Chrome.
Las formas modernas son usar sendBeacon y fetch keepalive como soluciones alternativas. Para obtener más información, puede consultar este tweet y este hilo . Si no usa estas soluciones, creo que no hay otra manera.