比方说,我有这样的代码在javascript: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);
}
,让在servlet代码是:
public class RootServlet extends HttpServlet {
public void doGet (HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.getWriter().write("What's up doc?");
resp.setStatus(200);
}
}
将xhr1仍然等待在readyState的新变化?或者一收到第一个响应,它就会关闭? 如果它仍然打开,会在一段时间后导致内存泄漏/较慢的浏览器并累积其中的一些? 我应该总是在servlet代码的末尾调用resp.getWriter()。close()?
,以及最后的jQuery的球迷在那里:
确实$.ajax()
表现为在这方面XMLHttpRequest()
?
这并不直接回答你的问题,但在你的例子中,你在调用send(null)后错误地设置了onreadystatechange,这是一个错误。 – 2011-04-01 02:00:51
千万不要这么想,但在发送它之前设置事件处理程序是完全有意义的。我会让我在真实的代码中改变它。不过,我从来没有遇到过这个问题。 – Aleadam 2011-04-01 02:07:16