Ale*_*dam 6 javascript java ajax jquery servlets
假设我在javascript中有这个代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
并让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);
}
}
Run Code Online (Sandbox Code Playgroud)
xhr1还会等待readystate的新变化吗?或者它在第一次回复后立即关闭?如果它仍然打开,它会在一段时间后导致内存泄漏/浏览器速度变慢并累积其中一些? 我应该总是在servlet代码的末尾调用resp.getWriter().close()吗?
最后,对于那里的jQuery粉丝:
确实$.ajax()
表现得像那样XMLHttpRequest()
吗?
xhr1还会等待readystate的新变化吗?或者它在第一次回复后立即关闭?如果它仍然打开,它会在一段时间后导致内存泄漏/浏览器速度变慢并累积其中一些?
在幕后,它仍然是开放的.然而,它(以及内存占用)是webbrowser引擎的责任.它在池中维护一定数量的连接,无论如何每个域都有一个最大限制.例如,MSIE有一个错误,当用户卸载(关闭)窗口时,它们会在它们仍在运行时泄漏.
我应该总是
resp.getWriter().close()
在servlet代码的末尾调用吗?
不必要.无论如何,servletcontainer都将关闭它.自己关闭它只能防止响应链中某些(错误)代码进一步写入响应主体的风险.有关更多详细信息,请参阅此答案.
而且,最后,对于那里的jQuery粉丝:确实
$.ajax()
表现得像那样XMLHttpRequest()
的方面?
它使用XMLHttpRequest
在幕后(仅当浏览器支持时;否则它是MSIE ActiveX对象).它在每次通话时构建一个新的.打开未经授权的源代码,Ctrl + F jQuery.ajaxTransport(
函数.所有ajax处理代码几乎都是200 loc,它涵盖了您可以考虑的所有可能的浏览器特定错误修复.
归档时间: |
|
查看次数: |
266 次 |
最近记录: |