(X)HTML, JavaScript, DHTML, XML, CSS Client scripting tehnologije, Dynamic HTML, Cascading Stylesheets, XML i standardi |
|
Alati teme | Način prikaza |
02. 08. 2006. | #1 |
Ivan Dilber
Sir Write-a-Lot
|
Ajax i error catching
Evo sad je nesto pukla Dizajn Zona (too much connections) i ostao mi otvoren AJAX i "loading,please wait" gif. Slicna stvar se desava i ovde sa ovim mod_security problemima. Ovo je vrlo user-NOT-friendly stvar, posto zbog ajaxa nema refresha strane, pa nije odmah jasno sta se desava, da li se zaglupeo browser ili klik na dugme ne radi ili sta...
Ajde malo da pricamo o tome kako najbolje spreciti ovakva zaglupljivanja, kako da web aplikacija shvati da je doslo do greske ili timeouta, i da se korisniku da neka smislena poruka o gresci... kakve su vase ideje, iskustva, predlozi ? Ajax ima svoj error handler, da li njega vB ne koristi, ili taj handler ne ume da uhvati ovakve greske?
__________________
Leadership is the art of getting people to want to do what you know must be done. |
02. 08. 2006. | #2 |
Goran Pilipović
Sir Write-a-Lot
|
Pa sto se tice ajax-a ako vrati header 200 OK, tesko je reagovati osim ako ne meris vreme.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
02. 08. 2006. | #3 |
Ivan Dilber
Sir Write-a-Lot
|
ok, znaci kad se salju greske treba paziti da se posalje korektan header,ako je moguce.. mod_security vrati 406 ako sam dobro shvatio, pa opet vB to ne uhvati (to jest ne obavesti korisnika) kako treba...
mozda bi mogao ajax da ocekuje odredjenu poruku u rezultatu, tipa <status>OK</status>, pa ako nema toga da pretpostavi da je doslo do greske ? Ili jos bolje <!-- moj_status="ok" --> onda bi ovo moglo da se gruva i za ajax i za obican prikaz, a da se ne vidi..
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 02. 08. 2006. u 02:08. |
02. 08. 2006. | #4 |
Goran Pilipović
Sir Write-a-Lot
|
Ti misliš na tu grešku?
Nema potrebe da proveravas tako nesto, generalno dovoljno je da proveravaš http_request.readyState, medjutim, pitanje je da li ce da se promeni readyState ako se zaglupi To bi mogao da napišeš handler koji će za onreadystatechange() da recimo skloni tvoj "loading" gif i da napiše nešto što ima smisla, recimo: Kôd:
http_request = new XMLHttpRequest(); http_request.onreadystatechange = function() { if (http_request.readyState == 4) { // sklonis loading gif i tako si siguran da bar ne zbunjujes coveka if (http_request.status == 200) { alert(http_request.responseText); } if (http_request.status == 406) { alert("Script im potencijalan security problem"); } else { alert('Problem (#: ' + http_request.status + ').'); } } }
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
02. 08. 2006. | #5 |
profesionalac
Qualified
Datum učlanjenja: 17.03.2006
Poruke: 109
Hvala: 9
15 "Hvala" u 10 poruka
|
@bluesman,
nek ti je sa srecom. Okaci code Sto se tice debugovanja ajaxa to je sjebano. Najjednostavnije je da napises u SS jeziku da ispisuje informacije u neki TXT file. Ona iz njega citas gdje greska. To je posebno dobro kad preko ajaxa "okidas" nesto iz/u bazi pa ne mozes da nadjes gresku. Debugovanje JS djela. Alert je zakon. |
03. 08. 2006. | #6 | |
Ivan Dilber
Sir Write-a-Lot
|
Citat:
Firebug i LiveHeaders rade posao odlicno za debug ajaxa, lepo snimis sta se gde salje... Ali nije to bilo pitanje, mene je zanimalo koje sve provere treba uvesti u jednu ajax aplikaciju da bi se ona ponasala "pristojno" u svim situacijama, znaci da se izbegnu greske gde korisnik nema pojma sta se desava sa aplikacijom (jer njemu izgleda da se nista ne desava).
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 03. 08. 2006. u 00:52. |
|
08. 08. 2006. | #7 |
član
Certified
Datum učlanjenja: 21.06.2005
Lokacija: Beograd
Poruke: 60
Hvala: 3
4 "Hvala" u 1 poruci
|
Bluesmanovo rešenje je ok, ali ostaje i mogućnost da se readystate nije promenio jer je nešto sjebano na serveru, tj server se muči i skript će se prekinuti tek kad istekne (recimo) php script execution time (pretpostavimo da se desi nešto što je programer uspeo da propusti). Da li staviti neki setTimeOut koji, u slučaju isteka timeouta, uskače i ispljune svoj error... ili postoji elegantnije rešenje?
|
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Error 404 / install.php | Suske | Sva početnička pitanja | 6 | 29. 08. 2008. 15:00 |
Parse error: syntax error, unexpected $end in... | Deki80 | Sva početnička pitanja | 2 | 01. 08. 2008. 15:56 |
Gmail Server Error | dinke | Web aplikacije, web servisi i software | 13 | 28. 03. 2007. 16:29 |
Error connection | oliver78 | Opušteno | 1 | 09. 04. 2006. 14:52 |
Ajax Mistakes a.k.a kad ne treba da koristite Ajax | nixa | Planiranje i usability | 7 | 13. 02. 2006. 17:20 |