Ajax Request Firefox hängt

mrno

Erfahrenes Mitglied
Hi,
ich habe folgenden Code:
Code:
<html>
<head><TITLE>Userauswahl</TITLE>
</head>
<BODY>
<script src="js/ajax.js" type="text/javascript" language="JavaScript1.3"></script>
<script language="JavaScript1.3" type="text/javascript">
window.onload=refreshWindow;
function refreshWindow(){
 $path=window.location.href;
 $path=$path.substring(0,$path.lastIndexOf("/")+1);
 $path=$path+"userlist.php";
 $param="?";
 if(document.getElementById('cn').value.length>0)
  $param+="&username="+document.getElementById('cn').value;
 if(document.getElementById('sn').value.length>0)
  $param+="&sn="+document.getElementById('sn').value;
 if(document.getElementById('givenname').value.length>0)
  $param+="&givenname="+document.getElementById('givenname').value;
  getAjaxRequest($path+$param,"liste");
}
</script>
<table>
 <tr><td align="center">Accountname</td><td align="center">Vorname</td><td align="center">Nachname</td></tr>
 <tr>
  <td width="200">
   <input type="text" id="cn" onkeyup="refreshWindow();" style="width:100%">
  </td>
  <td width="200">
   <input type="text" id="givenname" onkeyup="refreshWindow();" style="width:100%">
  </td>
  <td width="200">
   <input type="text" id="sn" onkeyup="refreshWindow();" style="width:100%">
  </td>
 </tr>
</table>
<div id="liste">
</div>
</BODY>
</html>
Ajax.js
Code:
function getAjaxRequest($url,$div){
 try{
  xhr = new ActiveXObject("Microsoft.XMLHTTP");
 }catch(e){
  xhr = new XMLHttpRequest();
 }
 xhr.onreadystatechange = function(){
  if(xhr.readyState==4){
   if(xhr.status==200)
    document.getElementById($div).innerHTML=xhr.responseText;
   else
    document.getElementById($div).innerHTML="Error code "+xhr.status;
  }
 };
 xhr.open("GET",$url,true);
 xhr.send(null);
}

Mein Problem ist jetzt, wenn ich einen Benutzer suche, und dann ein paar Zeichen lösche, hängt das Bild für eine weile. Ich vermute das es am Ajax Request liegt. Er blockiert das ganze fenster. Kann man des irgendwie als eine Art Thread lösen?
 
Am Request kann es eigentlich nicht liegen, das ist ja das Asynchrone an AJAX....der Request erfolgt, ohne den restlichen Ablauf währendessen zu unterbrechen, wie es ansonsten bei JS der Fall ist.

Prinzipiell würde ich xhr erstmal global deklarieren, und das Erstellen des XMLHttpRequest-Objektes incl. dessen Zuweisung an xhr nur beim ersten mal vornehmen.

Beim Starten einer neuen Anfrage könntest du eine evtl. schon laufende per xhr.abort() abbrechen, damit sich nicht die Anfragen in die Quere kommen....denn asynchron ist nur der Request selbst...die Funktion, welche beim Erhalt der Antwort ausgeführt wird, läuft wieder synchron.
 

Neue Beiträge

Zurück