正确的方式来进行不需要响应的AJAX调用?

时间:2012-05-22 05:08:02

标签: javascript ajax

当我不希望从服务器返回响应时,是否有正确的方法进行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?

2 个答案:

答案 0 :(得分:5)

无论您是否期望(或将来或将来都是)来自服

原因是,如果客户端在脚本执行完毕之前断开连接,大多数Web服务器都将终止请求。

服务器不必像返回数据那样“响应”,只需要“返回”。

即。回答你的问题“Ajax连接在某些时候是否断开连接?”:是的,当服务器终止连接时。

因此,您需要做的是确保ASP(X)脚本在完成其工作后立即终止。不要让它永远运行,将数据传递给需要长时间运行处理的帮助程序守护程序/服务等。

答案 1 :(得分:1)

xmlhttp.onreadystatechange只是XHR对象的一个​​事件,您可以在其中附加侦听器以侦听其状态更改。它是在页面上有一个按钮并添加onclick处理程序的同义词。

无论有没有处理程序(AJAX仍然调用,按钮仍可点击),它也会做同样的事情。唯一的区别是你不知道刚刚发生了什么(你不知道AJAX是否成功/失败,你不知道点击按钮的时间。)