Ne znam da li postoji takava mogucnost, ali bi bilo dobro zameniti naslov ove teme da ne bi privlacila ovako siroku raspravu. AJAX, DHTML i PHP u praksi bi bila dobro resenje.
Moram da priznam da i pored iskustva od 7 godina u web razvoju, i ako se AJAX pojavio odavno, ja do sada nisam koristio ovu tehnologiju. Da bih olaksao sebi zivot uzeo sam Prototype JavaScript framework koji je Alex predlozio, i za sada sam zadovoljan, posebno zbog Template klase koju sadrzi.
Resio sam da primenim AJAX na jednu od poslovnih web aplikacija koju upravo razvijamo. Problem kod ove vrste aplikacija je cinjenica da su korisnici uglavnom koristili desktop aplikacije slicne namene i odatle vuku neke navike. Recimo, zele da imaju mogucnost lake izmene podataka u tabelarnom prikazu, sto za Web predstavlja problem. Inicijalno resenje je kreiralo veliku formu u tabelarnom prikazu, gde je svaka vrsta odgovarala jednom zapisu (dokumentu). Ne moram da vam objasnjavam koliko to izgleda rogobatno. Kod tako velikih formi je uvek problem provere ispravnosti podataka, koja moze da izvrsi JavaScript na strani klijenta, ali je dobra praksa da i PHP proveri sve podatke pre unosa u bazu. Svako ko je imao iskustva sa velikim formama, posebno onim koje obradjuju veci broj zapisa odjednom, znaju da to nije trivijalni problem.
Pretpostavio sam da bi AJAX mogao da pomogne :) Resenje koje smo napravili izgleda ovako:
* Tabela sa zapisima se prikazuje u klasicnom tekstualnom obliku bez ikakvih edit polja inicijalno
* Za svaki zapis (vrstu tabele) postoji link kojim se omogucava editovanje. Prakticno to podrazumeva pozivanje PHP skripta koriscenjem AJAX-a, gde se vraca HTML kod za tu vrstu tabele sa svim poljima forme. Taj HTML kod se ubacuje na mesto postojece vrste za koju je zahtevano editovanje.
* Nakon izmene podataka, koriscenjem novog linka (save) podaci iz vrste se preko AJAX-a ponovo vracaju PHP skriptu na snimanje. Ako nema gresaka u podacima, zapis se snima u bazu i vraca se HTML kod sa novim vrednostima i bez polja za editovanje. Ako postoji greska, vraca se HTML sa poljima forme i odredjenim naznakama o gresci (recimo crveni border oko polja za unos).
Uocili smo da se JavaScript, koji je deo HTML koda koji se ubacuje koriscenjem innerHTML, ne izvrsava!
Za narednu verziju planiramo da iskoristimo JSON za prenos podataka i Template klasu iz Prototype framework-a. Problem kod prenosa podataka u JSON formatu predstavljaju select polja za unos. Kod ovakvih formi jedno isto select polje se ponavlja u vise vrsta, i zbog toga je korisno imati javascript funkciju za popunjavanje mogucih vrednosti (opcija). Kao sto sam vec rekao, kada se HTML kod ubacuje negde u dokument koriscenjem innerHTML-a, javascript kod se ne izvrsava. Zbog toga je prenos kompletnog HTML koda preko AJAX-a lakse resenje, jer je moguce poslati select polje sa vec popunjenim vrednostima. Resenje koje planiramo da upotrebimo je poziv posebne JavaScript funkcije nakon ubacivanja HTML koda u tabelu. Ta JS funkcija bi popunila sva select polja odgovarajucim vrednostima i postavila odgovarajucu default opciju, na osnovu primljenih podataka. Bitno je da vrednosti za select polja dolaze iz baze i da ih u nasem primeru imamo 5.
Interesuje me koliko je ovo slicno ili razlicito pristupu drugih u koriscenju AJAX-a.
Pozdrav,
Nikola Savic
Logik d.o.o. Nis -
www.logik.co.yu