Tämä funktio mahdollistaa XMLHttpRequest-kyselyiden tekemisen helposti. Funktiolle annetaan parametreiksi url
ja id
. POST-kyselyssä käytetään myös kahta muuta parametriä, lisätietoja alapuolella. url
on osoite, johon kysely tehdään. id
on elementin ID, johon osoitteen palauttama teksti tulostetaan.
Käyttötavat
Tällä funktiolla voit lähettää sekä GET- että POST-kyselyjä. Kumpiinkin voit myös antaa muuttujia, jotka lähetetään palvelimelle.
GET-kysely muuttujilla
Lisää osoitteen perään haluamasi muuttujat.
Funktion kutsunta esim.
load('index.php?a=viewsource&p=etusivu', 'lahdekoodi');
POST-kysely muuttujilla
Lisää params
-muuttujaan haluamasi muuttujat. Muista myös laittaa method
-parametrin arvoksi POST
Funktion kutsunta esim.
load('index.php', 'lahdekoodi', 'POST', 'a=viewsource&p=etusivu');
TÄRKEÄÄ TIETOA:
Jos lähetät POST-kyselyn, laita url
-muuttujaan VAIN osoite, ei mahdollisia parametrejä. Parametrit laitetaan params
-muuttujaan POST-kyselyssä. Muista myös täyttää method
-kenttä arvolla POST
.
Demo löytyy täältä.
load.js
function load(url, id, method, params){ // tarkistetaan onko funktion parametrit method // ja params täytetty, jos ei, laitetaan tarvittavat // arvot niille if(typeof method === "undefined") method = "GET"; if(typeof params === "undefined") params = ""; xmlhttp = "null"; // Tyhjennetään xmlhttp-muuttuja // Suoritetaan yhteensopivuustestejä if (window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } if (window.ActiveXObject){ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } // Jos muuttuja ei ole tyhjä if (xmlhttp !== "null"){ if(method == "POST"){ xmlhttp.open("POST", url, true); // POST-kysely // Lähetetään headereita xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", params.length); xmlhttp.setRequestHeader("Connection", "close"); } else { xmlhttp.open("GET",url,true); // GET-kysely } xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState === 4 && xmlhttp.status === 200){ // kysely onnistui, laitetaan tiedot elementtiin document.getElementById(id).innerHTML=xmlhttp.responseText; } }; // kun kysely on valmis, suoritetaan funktio if(method == "POST"){ // Jos tapa on POST, lähetetään muuttujat xmlhttp.send(params); } else { // Muutoin lähetetään tyhjä data xmlhttp.send(null); } } else { // Jos muuttuja oli tyhjänä, selain ei tue XMLHttpRequestiä // joten näytetään ilmoitus alert("Pahoittelemme, mutta selaimesi ei valitettavasti tue käyttämäämme XMLHTTP-tekniikkaa. Päivitäthän selaimesi uudempaan versioon."); } }
Käyttöesimerkki
<html> <head> <title>XMLHttpRequest-testi</title> <script type="text/javascript" src="load.js"> </script> </head> <body> Allaolevaan diviin pitäisi tulostua tiedoston <a href="tiedot.txt"><tt>tiedot.txt</tt></a> sisältö, kun painat <a href="javascript:load('tiedot.txt', 'tiedot');">tästä</a>.<br><br> <div id="tiedot" style="border:1px solid black;"><br></div> </body> </html>
Sori, esittelystä tuli vähän vaikeasti luettava :(
Yritin laittaa kaiken tarvittavan infon, niin meni noin hankalasti luettavaksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.