Digamos que tengo este código en javascript:¿Cuál es la duración de una llamada de Ajax?
function doAnAjaxCall() {
var xhr1 = new XMLHttpRequest();
xhr1.open('GET', '/mylink', true);
xhr1.onreadystatechange = function() {
if (this.readyState == 4 && this.status==200) {
alert("Hey! I got a response!");
}
};
xhr1.send(null);
}
y dejar que el código en el servlet sea:
public class RootServlet extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.getWriter().write("What's up doc?");
resp.setStatus(200);
}
}
Will xhr1 todavía esperar a nuevos cambios en readystate? ¿O se cierra tan pronto como recibe la primera respuesta? Si permanece abierto, dará lugar a pérdidas de memoria/navegador más lento después de un tiempo y la acumulación de algunos de esos? ¿Debería llamar siempre a resp.getWriter(). Close() al final del código del servlet?
Y, por último, para los aficionados jQuery por ahí:
hace $.ajax()
se comportan como XMLHttpRequest()
en ese sentido?
Esto no responde directamente a su pregunta, pero en su ejemplo, configuró erróneamente onreadystatechange después de invocar send (null), que es un error. –
Nunca pensé en eso, pero tiene mucho sentido establecer el controlador de eventos antes de enviarlo. Haré que cambie eso en mi código real. Sin embargo, nunca tuve un problema con eso. – Aleadam