AJAX e acronimul de la Asynchronous JavaScript And XML, e o tehnica pentru creare dinamica si rapida a paginilor web, sau parti din continutul lor.
Ajax permite trimiterea de date la server si prelucrarea raspunsului returnat de server fara reincarcarea paginii sau deschiderea altei pagini.
jQuery are mai multe metode (functii) pentru AJAX. In acest tutorial e prezentata metoda load().
$('element').load(url, data, complet)- url - specifica adresa URL la care se trimite cererea.
Pentru motive de securitate, fisierul la care se face cererea AJAX trebuie sa fie pe acelasi domeniu ca si pagina in care e scriptul Ajax.
<h2>Continut in extern.html</h2> <div id="cnt">Exemplu jQuery Ajax, metoda load(). <p>Un continut text in extern.html</p></div>
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>jQuery Ajax Test</title> <script type="text/javascript" src="jquery_1.6.1.js"></script> <script type="text/javascript"><!-- $(document).ready(function() { // cand se apasa pe un link cu class="lnk", preia adresa din "href" // preia continutul de la acea adresa si-l include in tag-ul cu id="content" $('a.lnk').click(function() { var url = $(this).attr('href'); $('#content').load(url); return false; }); }); --></script> </head> <body> <h1>Pagina Web test.html</h1> <a href="extern.html" title="Get extern" class="lnk">Get extern</a> <div id="content">Continutul initial in test.html</div> </body> </html>Cand se da click pe un link cu class="lnk", preia adresa URL din atributul "href" (cu .attr('href') ) si o adauga la functia load(), care va incarca datele de la acea adresa URL si le adauga in tag-ul cu id="content".
$('element').html('Incarcare...').load('url selector')- Adresa "url" si "selector" trebuie sa fie separate printr-un spatiu, in acelasi sir.
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>jQuery Ajax Test</title> <script type="text/javascript" src="jquery_1.6.1.js"></script> <script type="text/javascript"><!-- $(document).ready(function() { // cand se apasa pe un link cu class="lnk", preia valoarea din "href" // adauga o notificare de "Incarcare...", incarca continutul de la acea adresa URL // preia si adauga in tag-ul cu id="content" doar paragraful din #cnt $('a.lnk').click(function() { var url = $(this).attr('href'); $('#content').html('<h4>Incarcare...</h4>').load(url+ ' #cnt p'); return false; }); }); --></script> </head> <body> <h1>Pagina Web test.html</h1> <a href="extern.html" title="Get extern" class="lnk">Get extern</a> <div id="content">Continutul initial in test.html</div> </body> </html>Demo:
$('element').load('script.php', data)- data - poate sa contina un sir cu perechi "indice=valoare", separate prin "&", care va fi trimis prin GET. Sau poate sa contina un obiect (de tip JSON). Daca "data" contine un obiect, metoda de trimitere e POST.
<?php // verifica daca sunt trimise date prin GET, cu indice "pag" if(isset($_GET['pag'])) { $pag = strip_tags($_GET['pag']); // preia datele si sterge posible tag-uri // defineste un continut HTML in functie de valoarea lui $pag if($pag=='php') { $rehtml = '<b>Cursuri si tutoriale PHP-MySQL:</b> <u>www.coursesweb.net/php-mysql/</u>'; } else if($pag=='ajax') { $rehtml = '<b>Curs AJAX:</b> <u>marplo.net/ajax/</u>'; } else { $rehtml = '<b>Cursuri gratuite Web Development:</b> <u>marplo.net</u>'; } echo $rehtml; // returneaza valoarea lui $rehtml } else { // daca nu e $_GET cu indice "pag", returneaza un mesaj de eroare echo 'Eroare: date nevalide.'; } ?>- Explicatiile necesare pentru acest script sunt in cod.
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>jQuery Ajax - PHP</title> <script type="text/javascript" src="jquery_1.6.1.js"></script> <script type="text/javascript"><!-- $(document).ready(function() { // cand utilizatorul trimite formularul $('form').submit(function() { var url = $(this).attr('action'); // preia adresa URL din "action", a formularului trimis // defineste datele ce vor fi trimise prin GET la PHP // cu indice "pag" si optiunea selectata in <select> (cu id="pag") var data = 'pag='+ $('#pag').val(); // adauga notificare de "Incarcare..." si incarca continutul de la adresa URL (transferand datele) // raspunsul de la scriptul php il adauga in tag-ul cu id="content" $('#content').html('<h4>Incarcare...</h4>').load(url, data); return false; }); }); --></script> </head> <body> <div id="content">Continut initial ...</div> <form action="script.php" method="get"> Selecteaza curs: <select name="pag" id="pag"> <option value="altu">Altu</option> <option value="php">PHP</option> <option value="ajax">Ajax</option> </select> <input type="submit" id="submit" value="Trimite" /> </form> </body> </html>
var data = 'id=val1&name=val2&pag=val3';Daca vreti sa trimiteti un Array, sau un obiect, folositi sintaxa JSON (datele vor fi trimise prin POST):
var data = { 'array[]': ["valoare1", "valoare2", "valoare3"] };
$('element').load(url, data, function(raspuns, status, xhr){ // cod ce trebuie executat dupa ce cererea Ajax e trimisa })- raspuns - contine rezultatul returnat de server.
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>jQuery Ajax - verificare status</title> <script type="text/javascript" src="jquery_1.6.1.js"></script> <script type="text/javascript"><!-- $(document).ready(function() { // cand se apasa un link cu class="lnk", preia adresa URL din "href" // incarca raspunsul de la acel URL si verifica "status" // include raspunsul sau mesajul de eroare in tag-ul cu id="content" $('a.lnk').click(function() { var url = $(this).attr('href'); $('#content').load(url, function(raspuns, status, xhr) { // verifica "status", daca e "success", pune "raspuns" in #content // daca e "error", defineste un mesaj de eroare si-l afiseaza in #content // altfel, afiseaza un Alert cu valoarea lui "status" if(status=='success') { $('#content').html(raspuns); } else if(status=='error') { var ermsg = '<i>Eroare: '+ xhr.status+ ' '+ xhr.statusText+ '</i>'; $('#content').html(ermsg); } else { alert(status); } }); return false; }) }); --></script> </head> <body> <h2>Exemplu jQuery Ajax</h2> <div id="content">Continut initial...</div> <a href="script.php?pag=ajax" title="link to script.php" class="lnk">Link la script.php</a> <a href="nofile.php" title="link to nofile.php" class="lnk">Link la nofile.php</a> </body> </html>- Expresia: else { alert(status); } este adaugata pentru cazuri cand parametrul "status" are o valoare diferita de "success" sau "error".
<p>Adresa: <strong>http://CoursesWeb.net/</strong> - Tutoriale.</p>
#id { font-weight: 800; }
function someFunction() { alert("CoursesWeb.net"); } setInterval("someFunction()", 2000);
$vname = 8; echo $vname;
We have traveled in space. - Noi am calatorit (deja) in spatiu.
La niña pintaba un arco iris. - Fetita picta un curcubeu.