2011-03-14 68 views
1

嘿。
我使用AJAX(沒有框架)列出包含在服務器上的目錄文件。
第一:
的「getfiles.php」問的MySQL如果該目錄是密碼保護。如果是,則返回「!pw!」。
所以如果responseText匹配「!pw!」應使用輸入的密碼觸發第二個請求並返回文檔列表。AJAX請求第二次和IE6

Chrome和Firefox 3 + & 4都做得很好......但IE6仍然拒絕加載列表時,密碼已鍵入後。

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(); 
} 
+0

你用過像小提琴手,看看Ajax調用熄滅。不工作意味着什麼? – epascarello 2011-03-14 12:30:40

+1

我可以問 - 你是否反對使用像jQuery這樣的框架。您將大大減少編碼**,並且相當多地提高跨瀏覽器兼容性。 – Dutchie432 2011-03-14 12:34:25

+0

這是一個未經測試的使用jQuery重寫代碼(例如)。 http://jsfiddle.net/Jaybles/6fhSJ/ – Dutchie432 2011-03-14 12:42:03

回答

0

每次啓動一個新的請求時,實例化重用前一個實例的一個新的XMLHttpRequest代替。這應該解決它。