jQuery ha dejado de utilizar XMLHTTPRequest sincrónico

Resuelto Edd asked hace 9 años • 7 respuestas

Como muchos otros, mi sitio web utiliza jQuery. Cuando abro las herramientas de desarrollo, veo una advertencia que dice que XMLHTTPRequest es

en desuso debido a sus efectos perjudiciales para la experiencia del usuario final.

Continué y leí parte de la documentación , pero era bastante técnica. ¿Alguien puede explicar las consecuencias de pasar de XMLHTTPRequest a WHATWG en términos simples? Dice que sucedió en 2012.

Además, la documentación dice que XMLHttpRequest síncrono fuera de los trabajadores está en proceso de ser eliminado de la plataforma web, cuando eso sucede, si un agente de usuario los tenía en un servicio, ¿necesita modificar su código existente?

Edd avatar Jan 02 '15 07:01 Edd
Aceptado

Para evitar esta advertencia, no utilice:

async: false

en cualquiera de tus $.ajax()llamadas. Esta es la única característica que XMLHttpRequestestá en desuso.

El valor predeterminado es async: true, por lo que si nunca usas esta opción, tu código debería estar seguro si alguna vez se elimina la función.

Sin embargo, probablemente no lo será; puede que se elimine de los estándares, pero apuesto a que los navegadores seguirán admitiéndolo durante muchos años. Entonces, si realmente necesita AJAX sincrónico por algún motivo, puede usar async: falsee ignorar las advertencias. Pero hay buenas razones por las que AJAX sincrónico se considera de mal estilo, por lo que probablemente debería intentar encontrar una manera de evitarlo. Y las personas que escribieron aplicaciones Flash probablemente tampoco pensaron que desaparecería, pero ahora está en proceso de eliminación gradual.

Tenga en cuenta que la FetchAPI que está reemplazando XMLHttpRequestni siquiera ofrece una opción sincrónica.

Barmar avatar Jan 02 '2015 01:01 Barmar

La respuesta aceptada es correcta, pero encontré otra causa si está desarrollando en ASP.NET con Visual Studio 2013 o superior y está seguro de que no realizó ninguna solicitud ajax sincrónica ni definió ningún script en el lugar incorrecto.

La solución es deshabilitar la función "Enlace del navegador" desmarcando "Habilitar enlace del navegador" en el menú desplegable de la barra de herramientas de VS indicado por el pequeño ícono de actualización que apunta en el sentido de las agujas del reloj. Tan pronto como haga esto y vuelva a cargar la página, ¡las advertencias deberían detenerse!

Deshabilitar el enlace del navegador

Esto sólo debería ocurrir durante la depuración local, pero aún así es bueno saber la causa de las advertencias.

Sam avatar Sep 16 '2015 17:09 Sam

Esto me sucedió porque tenía un enlace a js externo fuera del encabezado justo antes del final de la sección del cuerpo. Ya sabes, uno de estos:

<script src="http://somesite.net/js/somefile.js">

No tuvo nada que ver con JQuery.

Probablemente verías lo mismo haciendo algo como esto:

var script = $("<script></script>");
script.attr("src", basepath + "someotherfile.js");
$(document.body).append(script);

Pero no he probado esa idea.

Dave Friend avatar May 21 '2015 17:05 Dave Friend