比方說,我有這樣的代碼在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