用于不再工作的简单Ajax代码

时间:2016-11-13 19:11:51

标签: ajax

我有一个自定义网络服务器,以及一些已经工作了大概18个月或更长时间的内容。这段时间没有触及过代码。但是,我现在发现一个依赖于Ajax的功能已不再适用。问题出在浏览器端。遗憾的是,Ajax代码是使用谷歌发现的,即使我定制它,我也没有真正理解它,但它已经工作到过去6个月左右的某个时间。现在它已经不再有效了,我有点迷失了......

代码的作用非常简单。我的HTML表单是一个选项卡控件。其中一个选项卡用于显示错误消息。 Ajax代码发送" \ ATCStatus.txt"的GET请求。大约每秒一次。服务器响应:

HTTP/1.1
Server: arduino
Content-Type: text/plain

#ATCErrorFlag#

其中#ATCErrorFlag#被wither" true"取代或"假"。如果" false"归来,没有任何反应。如果" true"返回,然后Ajax代码发送请求" \ ATCErrorPage.htm",切换到错误选项卡,并显示错误消息。

服务器接收请求,处理它们并发送正确的响应,但是Ajax代码就像没有收到任何响应一样,我无法弄清楚原因。

这里的任何人都知道足够的Ajax有线索吗?

这是Ajax代码:

setInterval(PollATCError, 1000);
function PollATCError()
{
    var xhr;

    if (window.XMLHttpRequest)
        xhr = new XMLHttpRequest();
    else if (window.ActiveXObject)
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    else
        throw new Error("Ajax is not supported by your browser");

    xhr.onreadystatechange = function()
    {
        if (xhr.readyState == 4 && xhr.status == 200)
        {
            clearTimeout(xhrTimeout);
            var response = xhr.responseText;
            if (response == "false") {
                // Do nothing
            } else if (response == "true") {
                // else, throw up Error Page
                window.location.replace('ATCErrorPage.htm');
                //document.getElementById("tab4event").click();
            }
        }
    }
    xhr.open('GET', 'ATCStatus.txt', true);
    xhr.send(null);

    var xhrTimeout = setTimeout("ajaxTimeout();", 900);
    function ajaxTimeout() 
    {
        xhr.abort();
        // Note that at this point you could try to send a notification to the
        // server that things failed, using the same xhr object.
    }
}

似乎特别奇怪的是,我似乎没有得到任何状态更改通知。如果我将状态更改处理程序的第一行设置为alert(),则警报永远不会出现。请求确实发送到服务器,正确的响应被发送回客户端,但似乎从未被XMLHttpRequest对象看到。即使是900毫秒的超时也不会发生。

这曾经非常好用!出了什么问题?我怎样才能深究这一点?

此致 Ray L。

0 个答案:

没有答案