当我不希望从服务器返回响应时,是否有正确的方法进行AJAX调用?我希望服务器保存一些数据,但客户端不需要响应。如果服务器永远不响应,AJAX连接是否会保持打开状态,等待响应,直到超时为止?
我会使用如下的Javascript。这是一个典型的AJAX调用,除了我遗漏了xmlhttp.onreadystatechange事件。
function SaveLabel()
{
var xmlhttp = null;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert('Your browser does not support this feature.');
return;
}
xmlhttp.open('GET', 'mypage.aspx?label=1');
xmlhttp.send(null);
}
我发现了一个类似的问题,但它并没有真正回答我的问题:Does Ajax connection disconnect at some point?
答案 0 :(得分:5)
无论您是否期望(或将来或将来都是)来自服
原因是,如果客户端在脚本执行完毕之前断开连接,大多数Web服务器都将终止请求。
服务器不必像返回数据那样“响应”,只需要“返回”。
即。回答你的问题“Ajax连接在某些时候是否断开连接?”:是的,当服务器终止连接时。
因此,您需要做的是确保ASP(X)脚本在完成其工作后立即终止。不要让它永远运行,将数据传递给需要长时间运行处理的帮助程序守护程序/服务等。
答案 1 :(得分:1)
xmlhttp.onreadystatechange
只是XHR对象的一个事件,您可以在其中附加侦听器以侦听其状态更改。它是在页面上有一个按钮并添加onclick
处理程序的同义词。
无论有没有处理程序(AJAX仍然调用,按钮仍可点击),它也会做同样的事情。唯一的区别是你不知道刚刚发生了什么(你不知道AJAX是否成功/失败,你不知道点击按钮的时间。)