Hendric: Frage zum Grundprinzip von AJAX

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);
}

  1. 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

  2. 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

    --
    "Love your nation - respect the others."