// Esitellään muuttuja XMLHTTPRequest-objektille:
var Pyynto;

// Alustetaan Pyynto-muuttuja sopivalla tavalla riippuen käytettävästä selaimesta:
function alustaPyynto()
{
    // Jos käytettävä selain on Internet Explorer:
    if(window.ActiveXObject)
    {
        Pyynto = new ActiveXObject("Microsoft.XMLHTTP");
    }
    // Jos käytettävä selain on jokin muu, esim. Mozilla, Opera, Safari:
    else if(window.XMLHttpRequest)
    {
        Pyynto = new XMLHttpRequest();
    }
}

// Käytetään GET-muuttujia tiedon välittämiseen palvelimelle
function suoritaGet()
{
    // Alustetaan ensin Pyynto-muuttuja kutsumalla edellä toteutettua funktiota:
    alustaPyynto();

    // Määritellään funktio, joka suoritetaan, kun vastaus palvelimelta on saapunut:
    Pyynto.onreadystatechange = kasitteleVastaus;

    // Käytetään GET-muuttujia tiedon lähettämiseen asynkronisesti
    // palvelimelle tarkista.php-nimiselle skriptille:
    Pyynto.open("GET", "tarkista.php?nimi=Mika", true);

    // Lähetetään pyyntö palvelimelle:
    Pyynto.send(null);
}

// Käytetään POST-muuttujia tiedon välittämiseen palvelimelle
function suoritaPost()
{
    // Alustetaan ensin Pyynto-muuttuja kutsumalla edellä toteutettua funktiota:
    alustaPyynto();

    // Määritellään funktio, joka suoritetaan, kun vastaus palvelimelta on saapunut:
    Pyynto.onreadystatechange = kasitteleVastaus;

    // Käytetään POST-muuttujia tiedon lähettämiseen asynkronisesti
    // palvelimelle tarkista.php-nimiselle skriptille:
    Pyynto.open("POST", "tarkista.php", true);
    
    // Asetetaan HTTP-otsake kertomaan sisällön tyyppi:
    Pyynto.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    // Lähetetään pyyntö palvelimelle:
    Pyynto.send("nimi=Mika");
}




//Käsitellään vastaus
function kasitteleVastaus()
{
    // Tarkistetaan, onko pyyntö suoritettu kokonaan:
    if(Pyynto.readyState == 4)
    {
        // Tarkistetaan, onko pyynnön suoritus onnistunut:
        if(Pyynto.status == 200)
        {
            // Jos kaikki on kunnossa, käsitellään saapunut data:
            alert(Pyynto.responseText);
        }
        else
        {
            alert("Pyynnön suorituksessa on tapahtunut virhe!");
        }
    }
}
