Ajax u praksi

Ajax u praksi

offline
  • igor86  Male
  • 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



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Dio foruma posvecen ovom 'jednostavnom' i korisnom sistemu !

Asynchronous JavaScript and XML
Da li koristite ovaj 'sistem' i na koji nacin, koje funkcije, request saljete get/post-om?
Podatke uzvracate XML-om ili koristite nesto kao JSON ?



offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Podrzavam forum, ali kao sto je bilo pre, kada se 'stvori' dovoljno tema vezanih za AJAX (ili bilo koju drugu oblast) tada se otvara forum za tu oblast (za sada AJAX nema f(kv)orum Mr. GreenMr. Green).


Za ovih nekoliko meseci koliko sam u AJAXu (hehe, kao da sam neki fussbaler Very Happy) slao sam podatke preko GET, a uzvracao texom.

Nije bilo potrebe za POSTom niti sam imao neke zahtevne podatke koji su vraceni, da bih koristio XML...

Za JSON nisam cuo.

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

ja koristim klasu prototype za ajax u kojoj je sve to automatski reseno, ti samo pozoves vec predefinisanu f-ju i u njoj naznacis da li zelis da se variable prenose preko get ili post metode, i vise ne brines o tome.

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23058
  • Gde živiš: Niš

Nisam zapazio ovo do sada, Igore svaka cast za clanak, izdvojio sam ga smešak
Koristice i meni Smile

Ko je trenutno na forumu
 

Ukupno su 667 korisnika na forumu :: 43 registrovanih, 6 sakrivenih i 618 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1567 - dana 15 Jul 2016 19:18

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Petar, _Sale, A.R.Chafee.Jr., airsuba, amaterSRB, AMCXXL, banebeograd, bespilotni, bojank, cikadeda, darkangel, Dicus, Faki-Valjevo, Filodendron, FOX2, Futurama, goranvas, HDMI, janezek67, Jezekijel, Kubovac, KUZMAR, ltcolonel, LUDI, milimoj, MORAVA1, necacaa, nuke92, ostoja2, ozz2, Pippi Langstrumpf, risima, rovac, S-lash, sasa.zoric, SsssssNOVI, Toni, vandrej, vathra, vlad44, Vlada1389, Vojo Ostoic, vukdra