Professional Documents
Culture Documents
I.Introducere
AJAX este arta de a schimba date cu serverul si a updata parti din pagina web fara a
reincarca toata pagina. (fara AJAX pentru a updata o parte din pagina web trebuie sa
reincarcam toata pagina )
<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
if (window.XMLHttpRequest)
{// cod pentru IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// cod pentru IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>
</body>
</html>
1.XMLHttpRequest
xmlhttp=new XMLHttpRequest();
Versiunile vechi de Internet Explorer (IE5 and IE6) folosesc un obiect ActiveX:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
Pentru a trimite o cerere la server, vom folosi metodele open () si send () ale obiectului
XMLHttpRequest:
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
Method Description
method: tipul cererii: GET sau POST
open(method,url,async) url: locatia fisierului pe server
async: true (asincron) sau false (sincron)
Sends the request off to the server.
send(string)
string: folosit doar in cazul cererilor POST
Cererea GET
EX:
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();
Daca vrei sa trimiti informatii cu metoda GET , adauga informatiile la URL
xmlhttp.open("GET","demo_get2.asp?fname=Henry&lname=Ford",true);
xmlhttp.send();
Cererea POST
Ex:
xmlhttp.open("POST","demo_post.asp",true);
xmlhttp.send();
Pentru a transmite date prin POST , sa spunem o forma HTML, adaugam un header
HTTP folosind setRequestHeader(). Datele effective se trimit cu metoda send(). (la GET
metoda send() e fara parametric , datele de transmis se adauga la URL)
xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");
Metoda Descriere
Adauga header HTTP la cerere
setRequestHeader(header,value)
header: specifica numele headerului
value: specifica valoarea headerului
xmlhttp.open("GET","ajax_test.asp",true);
Acest fisier poate fi de orice tip : .txt ,.xml, sau scripturi ca .asp si .php (ce pot face
anumite actiuni pe server inainte de a trimite date inapoi).
xmlhttp.open("GET","ajax_test.asp",true);
A trimite cereri asincron aduce o plus important . Cum multe din sarcinile ce se
desfasoara pe server consuma timp , inainte de AJAX aceste operatii puteau cauza
incetiniri sau chiar blocaje.
Cu AJAX nu mai trebuie sa asteptam raspunsul serverului pentru a continua ci putem sa
facem altceva in acest timp :
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
xmlhttp.open("GET","ajax_info.txt",false);
Using async=false is not recommended, but for a few small requests this can be ok.
Obs: Cand folosim async=false, nu mai scrie functia onreadystatechange – doar pune
codul dupa send():
xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
c. Raspunsul serverului
Property Description
responseText Primesti de la server sub forma text
responseXML Primesti de la server sub forma de XML data
xmlDoc=xmlhttp.responseXML;
var txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;
2. Evenimentul onreadystatechange
Cand trimitem o cerere unui server , vrem sa facem actiuni bazate pe raspunsul serverului
la cerere.
Property Description
Stocheaza o functie (sau numele uneia) ce va fie executata automat
onreadystatechange
de fiecare data cand se schimba proprietatea readyState
Contin starea lui XMLHttpRequest. Schimbarile de la 0 la 4:
0: cerere neinintializata
1: conexiune la server stabilit
readyState
2: cerere receptionata
3: procesarea cererii
4: cererea s-a procesat si raspunsul e gata
200: "OK"
status
404: pagina nu s-a gasit
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
Daca ai mai mult de o sarcina AJAX in websiteul tau , creaza doar 1 functie standard
pentru crearea unui obiect XMLHttpReques si apeleaz-o pentru fiecare sarcina AJAX
function myFunction()
{
loadXMLDoc("ajax_info.txt",function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
});
}