PDA

Pogčedajte punu verziju : XMLHttpRequest - početak


bluesman
10. 06. 2005., 14:41
Za sve one koji su razmišljali da počnu da koriste XMLHttpRequest, evo kratkog uputstva. To je ono što se "fensi" zove AJAX, znači asinhrono izvršavanje http request (POST ili GET) - najprostijim renikom učitavanje sadržaja bez reloadovanje strane.

Inicijalizacija objekta se vrši u zavisnosti od browsera i verzije_

<script type="text/javascript">
var xmlhttp = false; // xmlHTTP objekat

/* --------------------------------------
JScript omogućava uslovnu kompilaciju, proverava se verzija jscript-a.
-------------------------------------- */

/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
alert("Microsofts XML parsers nedostupan");
}
}
@else
alert("Morate imati noviju verziju JScript-a.");
@end @*/

if (!xmlhttp)
{
try {
xmlhttp = new XMLHttpRequest();
}
catch (e)
{
alert("Vaš browser ne podržava XMLHttpRequest objekat.")
}
}
</script>


XMLHttpRequest radi u sledećim browserima: Mozilla 0.9.5, IE5 +, Opera 8 (za ostale ne znam)

Šta sad sa ovim? Treba nam funkcija koja će da izvršava request:


<script type="text/javascript">
function openHttp (url)
{
if (xmlhttp)
{
xmlhttp.open("GET", url,true);
xmlhttp.onreadystatechange = UpdateContent;
xmlhttp.send(null);
}
}

function UpdateContent ()
{
if (xmlhttp.readyState == 4)
{
document.getElementById('content').innerHTML = xmlhttp.responseText;
}
}
</script>


funkcija UpdateContent je u stvari handler koji ažurira sadržaj kada se izvrši request. U načem slučaju upisuje sve što se vraća u DIV id 'content'

Znači treba nam:
<div id="content"></div>

Kao i link:
<a href='javascript:openHttp ("test.html");'>test</a>

Naravno, trebaće vam i fajl "test.html" koji se učitava.

Ovo je jednostavan primer, moguće je proveravati i status request-a, pročitati ceo header i još mnogo drugih stvari.

kalkulus
18. 06. 2005., 02:58
tek sam sada stigao da probam ovaj primer i primetio sam problem. Firefox 1.0.4 i Opera 8 pod Linuxom ne rade sa ovim primerom dok se ne ukloni deo sa uslovnom kompilacijom i kodom za IE. kada to sklonim onda radi odlicno

btw 10x za definitivno najjednostavniji i najjasniji primer koji sam video :)

a malo posle.. ;)
ispravka, problem pravi ovaj tvoj komentar unutar komentara, izgleda da zbunjuje browser gde je stvarno kraj komentara

bluesman
18. 06. 2005., 03:15
Da, moguće, promenio sam to, sada bi trebalo da je ok.

BTW, naprednija verzija se nalazi na mom blog-u (http://www.utp-code.com/users/bluesman/archives/32/), pa možda ne bi bilo loše da pogledaš i to ako ti je ovo laganica :)

kalkulus
18. 06. 2005., 14:52
vec sam video, 10x :)