offline
- igor86
- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
Ovako, napravio sam mali primjer prakticne upotrebe AJAX-a + JSON reprezentacije. Sada popularno zvane AJAJ.
Sta u stvari predstavlja JSON i kakva mu je svrha?
JSON (JavaScript Object Notation) u najkracim crtama predstavlja jedan sloj - posrednik (data-interchange) izmedju odredjenih programskih jezika, u ovom slučaju JavaScript-a i PHP-a, sto je najbitnije u oba smjera.
Naime imate objekat unutar JavaScripta npr.
var PODATAK = new Object;
PODATAK.ime = "Marko";
PODATAK.prezime = "Markovic";
PODATAK.telefon = new Object;
PODATAK.telefon.kucni = "123/123-123";
PODATAK.telefon.fiksni = "321/321-321";
PODATAK.datum_rodjenja = new Object;
PODATAK.datum_rodjenja.godina = 1980;
PODATAK.datum_rodjenja.mjesec = 5;
PODATAK.datum_rodjenja.dan = 20;
i hoćete da te podatke pošaljete PHP-u.
var STRING = PODATAK.toJSON();
Vaš JSON string izgleda
{"ime":"Marko","prezime":"Markovic","telefon":{"kucni":"123/123-123","fiksni":"321/321-321"},"datum_rodjenja":{"godina":1980,"mjesec":5,"dan":20}}
što vam nije ni bitno.
Sada na snagu stupa AJAX da taj string pošalje vašoj PHP skripti.
var LOKACIJA_VASE_PHP_SKRIPTE = "akcija.php";
var PRIKAZI = function( odgovor ){ if( odgovor.rezultat == "OK" ) alert(odgovor.poruka);};
Ajax.get ( LOKACIJA_VASE_PHP_SKRIPTE, PODATAK, PRIKAZI);
Funkcija Ajax.get() ima tri argumenta,
Prvi je lokacija PHP skripte,
Drugi je promjenljiva koju ćete proslijediti,
Treći mora biti funkcija koja će biti pozvana kada se dobije odgovor od PHP-a.
Izgled URL-a koji ce se pozvati izgleda
/akcija.php?JSON={"ime":"Marko","prezime":"Markovic","telefon":{"kucni":"123/123-123","fiksni":"321/321-321"},"datum_rodjenja":{"godina":1980,"mjesec":5,"dan":20}}
što vam nije ni bitno.
Sada ćemo prikazati PHP kod
$PODATAK = $JsonHandler -> Request( $_GET['JSON'] );
$PODATAK je promjenljiva - objekat, isti onaj koji ste imali u JS.
Da biste dobili pojedinačne članove to radite sa npr.
$ime = $PODATAK -> ime ;
$godina_rodjenja = $PODATAK -> datum_rodjenja -> godina;
Sada slijedi Vaš logički dio skripte koji će nešto uraditi sa ovim podacima, npr. upisati u bazu.
Poslije ovoga nastupa priprema odgovora npr.
$Odgovor["poruka"] = "Podatak uspjesno upisan";
$Odgovor["rezultat"] = "OK";
$JsonHandler -> Response($Odgovor);
method Response() Class-e JsonHandler za argument ima promjenljivu koju ce pretvoriti u JSON string ...
{"poruka":"Podatak uspjesno upisan","rezultat":"OK"}
,kojeg će isprintati (echo).
Kao sto je obećano ovo vam nije bitno.
PHP je odgovorio, stoga se vraćamo JavaScript-u
Prije nego sto JS pozove funkciju "PRIKAZI", koju smo naveli da je pozove poslije odgovora,
od dobijenog stringa {"poruka":"Podatak uspjesno upisan","rezultat":"OK"} JSON ce napraviti novi promjenljivu - objekat koji cemo dobiti u funkciji "PRIKAZI", kao argument;
A kako je gore navedeno, funkcija "PRIKAZI" ce izbaciti vrijednost stringa odgovor.poruka, ako je odgovor.rezultat OK.
U suštini ovo je kostur samog sistema, i bitno je navesti da se JSON-om može prenositi dosta vrsta promjenljivih, kao npr. string, broj, niz, koje će biti kodirane i dekodirane na već predefinisan nacin, o kojem ne morate brinuti.
Inace sam AJAX moze da funkcionise i na XML jeziku kao sto je i bio zamišljen, ali razmislite o XML kodiranju npr.
Da biste ove gore podatke poslali XML-om odgovor bi izgledao
<poruka>Podatak uspjesno upisan</poruka><rezultat>OK</rezultat>
a JSON-om, kao sto je receno
{"poruka":"Podatak uspjesno upisan","rezultat":"OK"}
Vidite razlike u dužini i to za samo dvije promjenljive? U tome je stvar.
Imajte na umu da sa manjom dužinom JSON string-a pri slanju i iz JS-a i iz PHP-a imaćete brži odziv.
Dalje sve ovisi o vasem znanju ova dva jezika, kao i mašti.
Unutar HTML-a morate includeovati json.js fajl, a sa druge strane unutar PHP-a json.php.
Ovde cu zakačiti jedan kompletan primjer sa ovim fajlovima. Pa sa srećom.
https://www.mycity.rs/must-login.png
Ko se bavi ovim poslom trebao bi ovo pokušati, zato što je izuzetno korisno (Sto dokazuje i da su JSON funkcije već ugradjene unutar PHP 5), a ni malo komplikovano. I zato što je JSON projekat razvijen za mnoštvo programskih jezika http://www.json.org/.
Toliko od mene
|