Christian Kruse: Ajax-Post-Request

Beitrag lesen

你好 Thomas,

<scriptlanguage="javascript" type="text/javascript">
function postrequest(url,data) {

function auswerten() {
  if(httpObject.readyState == 4)  <------ Zeile 16!
  {
   if(httpObject.status == 200)
   {
   result = httpObject.responseText;
   document.getElementById("ausgabe").innerHTML = result;
   }
  }
}

var httpObject = null;
try
{
httpObject = new XMLHttpRequest();
}
catch (ms)
{
try
{
        httpObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
catch (nonms)
{
     try
  {
         httpObject = new ActiveXObject("Microsoft.XMLHTTP");
     }
  catch (failed)
  {
   httpObject = null;
  }
}
}
if (httpObject != null)
{
httpObject.onreadystatechange = auswerten;
httpObject.open('POST', url, true);
httpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpObject.setRequestHeader("Content-length", data.length);
httpObject.setRequestHeader("Connection", "close");
httpObject.send(data);
}
var httpObject = null;

}
</script>


> [...]  
> Ach ja, die Fehlerkonsole sagt:  
>   
> Fehler: httpObject is null  
> Quelldatei: http://www.example.com/ajax/test.php  
> Zeile: 16  
>   
> Hat jemand eine Idee wie ich dieses Problem lösen kann?  
  
Nimm das doch mal das letzte `var httpObject = null;`{:.language-javascript} raus :) Du hast ein Race-Condition-Problem, dass durch das alert() "umgangen" wird. Du kannst ja den ganzen Block, der dir dein XMLHTTP-Objekt erstellt, in ein `if(httpObject != null)`{:.language-javascript} packen und httpObj global lassen - halte ich eh für eine bessere Lösung.  
  
Übrigens: Funktionen in Funktionen sind ziemlich übel ;)  
  
再见,  
 克里斯蒂安  

-- 
<http://wwwtech.de/>  
[WWWTech.de](http://ck.kennt-wayne.de/wwwtech-de) | [Wayne Revived](http://ck.kennt-wayne.de/wayne-revived)  
Swen Wacker: Denn wer 'ne Blacklist hat, muss halt daran denken, dass er manches nicht sieht... und vor dem posten die Realitaet einschalten