[ fly @ 07.07.2005. 13:29 ] @
Znaci unutar layout-a imam iframe sa listingom podataka. Kada zelim novi unos ucita se u iframe forma i posle submit-a i upisivanja u bazu vraca se osvezeni listing u iframe-u ali mi je potrebno da istovremeno imam i osvezeni layout. Sve je radjeno php-om, a za ovo mi treba javascript sa kojim se slabije snalazim. Kako to uraditi?
[ 365 @ 07.07.2005. 17:58 ] @
Šta smatraš pod osveženim layoutom u ovom slučaju?

[Ovu poruku je menjao 365 dana 07.07.2005. u 18:59 GMT+1]
[ fly @ 09.07.2005. 11:12 ] @
Pod layout-om podrazumevam ucitanu stranicu. (Izvinjavam se zbog izraza koji je mozda zbunio vise citatelja.)
Znaci stranica ima u sebi jedan iframe u kome se izlistavaju i unose novi podaci. Posle submita forme u iframe-u ja vidim dodati novi red podataka, ali posto ti redovi nose brojcane podatke cija se suma ispisuje van iframe, ona ostaje ista posle unosa novih vrednosi dok se rucno ne odradi refresh - treba cela stranica da se osvezi posle submita automatski.
Kombinacijom php-a i javascripta mogu dobiti samo refresh posle ucitavanja, izlistavanja i prikaza stare vrednost - sto je sporija veza to se vise uocava -, a meni ne treba pred ocima da se desava refresh, nego u pozadini uz pomoc neke logike. Znam da je moguce ali nisam nasao primer za to nego samo neke varijante osvezavanja jednog prozora iz drugog uz gasenje prvog.
Zato ako neko zna te linije koda, hvala unapred.
[ bmanj @ 15.07.2005. 20:46 ] @
Probaj da definicija FORM u ifrejmu pokazuje na parent.

[Ovu poruku je menjao bmanj dana 16.07.2005. u 00:22 GMT+1]
[ noctua @ 20.07.2005. 12:25 ] @
Pozdrav!

Prijatelju, ako te dobro razumem, to sto ti hoces resava se AJAX-om (Ako neznas sta je doticni: pa, recimo, tehnika kojom mozes da "osvezis" samo jedan element na stranici).
E, sad, ja nisam Vanga (nazalost :) i ne mogu da vidim dokle je taj tvoj projekat pristigao i kako ti baratas sa svim elementima na stranici, ali "zakrpa" koja mi pada na pamet:
Prvo - Izbaci submit button i napravi obican button koji na onClick poziva js tvoju JS funciju.
Drugo - Ispis tog rezultata stavi u neki element koji je moguce jednostavno kontrolisati iz JS-a (npr INPUT tex koji sredis CSS-om da izgleda flat)
Trece - Funkcija koju poziva button smestis u IFRAME i radi tako sto: procita vrednost iz polja za unos (vrednost koju vracas serveru kroz IFRAME); procita iz, kako ga ti zoves, layout-a staru vrednost; uradi staro+novo ili sta god je vec potrebno; upise u odovarajuce polje izracunatu vrednost; uradi submit forme

To bi otprilike ovako izgledalo (ali ovo definitivno moras ti da prepravis/doradis jer raspored poziva DOM elemenata zavisi od toga kako si rasporedio elemente i kako ih nazivas...)

Code:

 function myClick {
  // Ovo menjas na osnovu organizacije:
  // da li je IFRAME u div-u, u necemu...
  var parent=document.getParent(id_iframe-a); 
  
  // Kako ces ocitati sledece vrednosti zavisi od toga kako ih unosis
  // Ja sam pretpostavio da unosis u INPUT koji je u formi
 
  var oldResult=parent.ime_polja_u_kom_prikazujes.value;
  var newValue=document.ime_forme.ime_polja_u_kom_se_unosi.value; 
  var newResult;
 
  // Uradi proveru ispravnosti unetih podataka
  // Ako je neispravno stavis
  /*Alert('Greska...');
     document.ime_forme.ime_polja_u_kom_se_unosi.active();
     document.ime_forme.ime_polja_u_kom_se_unosi.focus();
     return false;
  */
  ...
  newResult = oldResult + newValue;
  parent.ime_polja_u_kom_prikazujes.value=newResult;
  document.form.submit(); // eventualno ovde da dodas url+parametri...
 }


E sad, ako je obracun komplikovan i ako ne moze da se uradi iz JS-a (nemas sve parametre) onda:

Postavis u body tagu IFRAME-a onLoad funkciju koja ce da procita vrednost posledneg unetog elementa, procita staru vrednost, sabere, i napise u parent document novu vrednost.

A Ako i to ne moze, onda u kodu spremis posebnu promenljivu koja sadrzi novi rezultat; smestis ga u hidden polje; a uonLoad napravis tako da samo procita vrednost hidden polja i u glavnom dokumentu "pregazi" postojecu vrednost.

Maglovito, a?

Pa sta da ti kazem... IFRAME je gotovo nemoguce kontrolisati iz roditeljskog dokumenta, tako da moras da se dovijas raznim trikovima i da pravis hardcode JS putanje po DOMu...

U svakom slucaju, za u buduce: google+AJAX+php... ima da te ne boli glava...
Cak ces moci da "obradjujes" totalno nebulozne zahteve klijenata :)