Javascript AJAX readystate

Javascript AJAX readystate,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,该脚本每隔500毫秒向Apache web服务器发送一个请求,以使用AJAX检索XML文档。直到最近,此脚本在下面列出的所有浏览器上都正常运行。现在XMLHttpObject readyState将在一分钟左右等于4,但随后将在0和1之间切换。当我刷新网页时,readyState返回到4,但在大约一分钟后再次在0和1之间切换 我敢肯定,这个错误是在我们被迫启用IPV6之后开始出现的。我已经使用Internet Explorer 7、Internet Explorer 8、Firefox 3.0.

该脚本每隔500毫秒向Apache web服务器发送一个请求,以使用AJAX检索XML文档。直到最近,此脚本在下面列出的所有浏览器上都正常运行。现在XMLHttpObject readyState将在一分钟左右等于4,但随后将在0和1之间切换。当我刷新网页时,readyState返回到4,但在大约一分钟后再次在0和1之间切换

我敢肯定,这个错误是在我们被迫启用IPV6之后开始出现的。我已经使用Internet Explorer 7、Internet Explorer 8、Firefox 3.0.15和Firefox 3.5.5在多台计算机上测试了该脚本。目前,它只能在Internet Explorer 7和8下正常工作

有没有人对如何在Firefox下使其正常运行有任何建议

HTML和Javascript代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
<link rel="stylesheet" type="text/css" href="css/master_default.css">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Monitor</title>
</head>

<div id='screen_container'>
  <div id='data_tables'>
    <div id='data_tables_heading' class='page_container_heading'>Real-Time Data Tables</div>
    <div id="table_holder"></div>
  </div>
</div>

<script type='text/javascript' src='scripts/jquery.js'></script>

<!-- Handles AJAX server interface to retrieve XML positioning data. -->
<script language="javascript" type="text/javascript">
var ifspe_server_address = 'http://10.0.0.1:8080/';

var ifspe_positioning_dto_filename  = 'digital_receiver_ifspe_dto.xml';
var xml_http_object_positioning_dto = getXMLHttpObject();

get_ifspe_positioning_dto();

var ifspe_status_message_dto_filename  = 'ifspe_status_message_dto.xml';
var xml_http_object_status_message_dto = getXMLHttpObject();

get_ifspe_status_message_dto();

var refresh_data_id         = window.setInterval("get_ifspe_positioning_dto()", 500);
var refresh_status_messages = window.setInterval("get_ifspe_status_message_dto()", 500);
var updating_state          = 1;

// Write status message to text box.
function update_status_message(status_message_text)
{
  if(updating_state == 1)
  {
    var msg = document.getElementById("status_message_value");
    msg.innerHTML = status_message_text;
  }  
}

// Write status message to text box.
function update_debug_message(debug_message_text)
{
  if(updating_state == 1)
  {
    var msg = document.getElementById("debug_message_value");
    msg.innerHTML = debug_message_text;
  }  
}

// Retrieve XML HTTP object based on browser type.
function getXMLHttpObject()
{
  var httpObj;

  // Use this for Internet Explorer browsers.
  if(window.ActiveXObject)
  {
    httpObj = new ActiveXObject("Microsoft.XMLHTTP");
  }
  // Use this for Firefox browsers.
  else if(window.XMLHttpRequest)
  {
    httpObj = new XMLHttpRequest();
  }

  return httpObj;
}

// Sends request for XML Status Message Data Transfer Object (DTO)  file to server.
function get_ifspe_status_message_dto()
{
  var msg;
  msg = "AJAX readyState: " + xml_http_object_status_message_dto.readyState;
  update_debug_message(msg);

  // Not sure if this abortion is helpful.
  if(xml_http_object_status_message_dto.readyState > 0 && 
     xml_http_object_status_message_dto.readyState < 4)
  {
    xml_http_object_status_message_dto.abort();
  }
  else
  {
    // Added '?vers="+new Date().getTime()' to the server address so that it always gets a new XML file and not a cached version.
    xml_http_object_status_message_dto.open("GET", 
    ifspe_server_address+ifspe_status_message_dto_filename+"?vers="+new Date().getTime(), true);

    xml_http_object_status_message_dto.onreadystatechange = ifspe_status_message_dto_handler;

    xml_http_object_status_message_dto.send(" ");
  }
}

// Handles new XML file available event.
function ifspe_status_message_dto_handler()
{
  // If start/stop button is set to start (run).
  if(updating_state == 1)
  {
    if(xml_http_object_status_message_dto.readyState == 4)
    {
      if(xml_http_object_status_message_dto.status == 200)
      {  
        // Get XML data.
        var response = xml_http_object_status_message_dto.responseXML;

        var status_message_root = response.getElementsByTagName("STATUS_MESSAGE_FILE");

        // Parse xml file for status message tag.
        if(status_message_root != null)
        {
          if(status_message_root[0] != null)
          {
            var message = status_message_root[0].getElementsByTagName("MESSAGE");

            // Parse xml file for message tag.
            if(message[0] != null)
            {
              // Get message tag.
              var message_text = message[0].childNodes[0].nodeValue;

              // Update status message.
              update_status_message(message_text);
            }
          }
        }
      }
    }
  }
}

// Sends request for XML Positioning Data Transfer Object (DTO) file to server.
function get_ifspe_positioning_dto()
{
  // Not sure if this abortion is helpful.
  if(xml_http_object_positioning_dto.readyState > 0 && xml_http_object_positioning_dto.readyState < 4)
  {
    xml_http_object_positioning_dto.abort();
  }
  else
  {
    // Added '?vers="+new Date().getTime()' to the server address so that it always gets a new XML file and not a cached version.
    xml_http_object_positioning_dto.open("GET", 
    ifspe_server_address+ifspe_positioning_dto_filename+"?vers="+new Date().getTime(), true);

    xml_http_object_positioning_dto.onreadystatechange = ifspe_positioning_dto_handler;

    xml_http_object_positioning_dto.send(" ");
  }
}

// Parse XML data.
//function handle_response()
function ifspe_positioning_dto_handler()
{
  // If start/stop button is set to start (run).
  if(updating_state == 1)
  {
    if(xml_http_object_positioning_dto.readyState == 4)
    {
      if(xml_http_object_positioning_dto.status == 200)
      {
        // Get XML data.
        var response = xml_http_object_positioning_dto.responseXML;

        //
        // Log new XML data (Only works for Internet Explorer browsers).
        //
        if(logging_state == 1)
        {
          if(window.ActiveXObject)
          {          
            var digital_receiver = response.getElementsByTagName("DIGITAL_RECEIVER");
            // Process data.
          }
        } 
      }
      else if(xml_http_object_positioning_dto.status == 404)
      {
        alert("URL does not exist!");
      }
      else
      {
        //alert("Status is "+httpObj.status);
      }
    }
  }
}
</script>

</html>

班长
实时数据表
var ifspe_服务器地址=http://10.0.0.1:8080/';
var ifspe_positioning_dto_filename='digital_receiver_ifspe_dto.xml';
var xml_http_object_positioning_dto=getXMLHttpObject();
获取_ifspe_positioning_dto();
var ifspe_status_message_dto_filename='ifspe_status_message_dto.xml';
var xml_http_object_status_message_dto=getXMLHttpObject();
获取_ifspe_status_message_dto();
var refresh\u data\u id=window.setInterval(“get\u ifspe\u positioning\u dto()”,500);
var refresh_status_messages=window.setInterval(“get_ifspe_status_message_dto()”,500);
var更新_状态=1;
//将状态消息写入文本框。
功能更新\状态\消息(状态\消息\文本)
{
如果(更新_状态==1)
{
var msg=document.getElementById(“状态消息值”);
msg.innerHTML=状态\消息\文本;
}  
}
//将状态消息写入文本框。
函数更新\调试\消息(调试\消息\文本)
{
如果(更新_状态==1)
{
var msg=document.getElementById(“调试消息值”);
msg.innerHTML=调试消息文本;
}  
}
//根据浏览器类型检索XML HTTP对象。
函数getXMLHttpObject()
{
var-httpObj;
//用于Internet Explorer浏览器。
if(window.ActiveXObject)
{
httpObj=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
//在Firefox浏览器中使用此选项。
else if(window.XMLHttpRequest)
{
httpObj=新的XMLHttpRequest();
}
返回httpObj;
}
//向服务器发送XML状态消息数据传输对象(DTO)文件的请求。
函数get_ifspe_status_message_dto()
{
var-msg;
msg=“AJAX readyState:+xml\u http\u object\u status\u message\u dto.readyState;
更新调试消息(msg);
//我不确定这种流产是否有用。
如果(xml_http_object_status_message_dto.readyState>0&&
xml\u http\u object\u status\u message\u dto.readyState<4)
{
xml_http_object_status_message_dto.abort();
}
其他的
{
//将“?vers=“+new Date().getTime()”添加到服务器地址,以便它始终获取新的XML文件,而不是缓存版本。
xml\u http\u object\u status\u message\u dto.open(“GET”,
ifspe_服务器地址+ifspe_状态消息\u dto_文件名+“?vers=“+new Date().getTime(),true);
xml\u http\u object\u status\u message\u dto.onreadystatechange=ifspe\u status\u message\u dto\u handler;
xml\u http\u object\u status\u message\u dto.send(“”);
}
}
//处理新的XML文件可用事件。
函数ifspe_status_message_dto_handler()
{
//如果启动/停止按钮设置为启动(运行)。
如果(更新_状态==1)
{
if(xml\u http\u object\u status\u message\u dto.readyState==4)
{
if(xml\u http\u object\u status\u message\u dto.status==200)
{  
//获取XML数据。
var response=xml\u http\u object\u status\u message\u dto.responseXML;
var status_message_root=response.getElementsByTagName(“status_message_FILE”);
//解析状态消息标记的xml文件。
如果(状态\消息\根!=null)
{
如果(状态消息根[0]!=null)
{
var message=status_message_root[0]。getElementsByTagName(“消息”);
//解析消息标记的xml文件。
如果(消息[0]!=null)
{
//获取消息标签。
var message_text=message[0]。子节点[0]。节点值;
//更新状态消息。
更新状态消息(消息文本);
}
}
}
}
}
}
}
//向服务器发送XML定位数据传输对象(DTO)文件的请求。
函数get_ifspe_positioning_dto()
{
//我不确定这种流产是否有用。
if(xml\u http\u object\u positioning\u dto.readyState>0&&xml\u http\u object\u positioning\u dto.readyState<4)
{
xml_http_object_positioning_dto.abort();
}
其他的
{
//将“?vers=“+new Date().getTime()”添加到服务器地址,以便它始终获取新的XML文件,而不是缓存版本。
xml\u http\u object\u positioning\u dto.open(“GET”,
ifspe_服务器地址+ifspe_定位\u文件名+“?vers=“+new Date().getTime(),true);
xml\u http\u object\u positioning\u dto.onreadystatechange=ifspe\u positioning\u dto\u处理程序;
xml\u http\u object\u positioning\u dto.send(“”);
}
}
//解析XML数据。
//函数句柄_响应()
函数ifspe_positioning_dto_handler()
{
//如果启动/停止按钮设置为启动(运行)。
如果(更新_状态==1)
{
if(xml\u http\u object\u positioning\u dto.readyState==4)
{
if(xml\u http\u object\u positioning\u dto.status==200)
{
//获取XML数据。
var response=xml\u http\u object\u positioning\u dto.responseXML;
//
//记录新的XML数据(仅适用于Internet Explorer浏览器)。
//
if(日志记录状态==1)
{
if(window.ActiveXObject)
{          
var digital_receiver=response.getElementsByTagName(“digital_receiver”);
//处理数据。
}
} 
}
else if(xml\u http\u object\u positioning\u dto.status==404)
{
警报(“URL不存在!”);
}
其他的
{
//警报(“状态为”+httpObj.Status);
}
}
}
}

我在Firefox和