AJAX第二次请求和IE6

时间:2011-03-14 12:23:15

标签: php javascript ajax internet-explorer-6

嘿。
我正在使用AJAX(无框架)列出服务器上目录中包含的文档 第一:
“getfiles.php”询问MySQL目录是否受密码保护。如果是,则返回“!pw!” 所以如果responseText匹配“!pw!”应使用输入的密码触发第二个请求并返回文档列表。

Chrome和FireFox 3+& 4表现不错......但是输入密码后,IE6仍然拒绝加载List。

P.S。:对不起我的英语不好。

function showFiles(str)
{
var xmlhttp = false;
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
       xmlhttp = new XMLHttpRequest();
       if (xmlhttp.overrideMimeType) {
           xmlhttp.overrideMimeType('text/xml');
       }

   } else if (window.ActiveXObject) { // IE
       try {
           xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
           try {
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
           } catch (e) {}
       }
   }

   if (!xmlhttp) {
       alert('Unfortunately you browser doesn\'t support this feature.');
       return false;
   }    
xmlhttp.onreadystatechange=function()
  {
  switch (xmlhttp.readyState)
    {
    case 4:
        if (xmlhttp.status==200)
            {
            if (xmlhttp.responseText.match("!pw!"))
                {
                var pw = prompt ("A Password is required!\nIf you don\'t have the Password, please ask your Colleagues","Passwort needed");
                xmlhttp.open("GET","getfiles.php?f="+str+"&pw="+pw,true);
                xmlhttp.send();
                }
            else
                {
                document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }
            break;
    default:
        document.getElementById("txtHint").innerHTML="<div align=\"center\"><img src=\"../_img/wait.gif\"/></div>";
        break;
    }

  }
xmlhttp.open("GET","getfiles.php?f="+str,true);
xmlhttp.send();
}

1 个答案:

答案 0 :(得分:0)

每次启动新请求时实例化新的XMLHttpRequest,而不是重用上一个实例。那应该解决它。