Frage zum Grundprinzip von AJAX
Hendric
- javascript
Hab eine Frage zu Ajax. Das Beispiel unten hab ich in einem Tutorial gefunden. Die letzten beiden Zeilen sind mir nicht so ganz klar. Es ist doch eigentlich unsinnig mit "onreadystatechange" die Antwort auf den Request auszuwerten und anschließend noch die Methoden "setRequestHeader" und "send" auszuführen.
Frage:
Welchen Sinn machen die letzten beiden Zeilen. Müßten diese nicht vor dem Auswerten mit Hilfe von von "onreadystatechange" aufgerufen werden?
function doIt()
{
//erstellen des requests
...
req.open( "GET",
'http://localhost/ajax-tutorial/eins/test.txt',
true);
req.onreadystatechange = function()
{
switch(req.readyState)
{
case 4:
if(req.status!=200)
{
alert("Fehler:"+req.status);
}
else
{
alert(req.responseText);
document.getElementById('eins').innerHTML =
'<strong>'+
req.responseText
+ '</strong>';
}
break;
default:
return false;
break;
}
};
req.setRequestHeader( "Content-Type",
"application/x-www-form-urlencoded"
);
req.send(null);
}
Hallo Hendric,
Welchen Sinn machen die letzten beiden Zeilen. Müßten diese nicht vor dem Auswerten mit Hilfe von von "onreadystatechange" aufgerufen werden?
Werden sie doch. onreadystatechange ist ein Ereignis. Die Zeile ndarunter sind normale Funktionsaufrufe.
Jonathan
Moin!
Welchen Sinn machen die letzten beiden Zeilen. Müßten diese nicht vor dem Auswerten mit Hilfe von von "onreadystatechange" aufgerufen werden?
req.onreadystatechange = function()
{
[...]
};
Das hier ist kein FunktionsAUFRUF, sondern die Zuweisung einer Funktion an die onreadystatechange-Eigenschaft. Das ist eine Eigenart von Javascript: Man kann Funktionen auch in Variablen speichern (vereinfacht gesprochen).
req.send(null);
Erst dieser Aufruf startet den AJAX-Request, in deren Verlauf die in onreadystatechange gespeicherte Funktion mehrmal aufgerufen wird (immer dann, wenn sich der readystate ändert - wie der Name schon sagt).
- Sven Rautenberg