DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   Ajax i error catching (http://www.devprotalk.com/showthread.php?t=1325)

ivanhoe 01. 08. 2006. 23:28

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?

bluesman 01. 08. 2006. 23:57

Pa sto se tice ajax-a ako vrati header 200 OK, tesko je reagovati osim ako ne meris vreme.

ivanhoe 02. 08. 2006. 01:06

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..

bluesman 02. 08. 2006. 03:40

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 + ').');
                }
        }
}

Ono sto cu ja prvo sledece pokusati da uradim je ajax file upload pa cu taman da istestiram neke stvari.

zidoo 02. 08. 2006. 22:32

@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.

ivanhoe 02. 08. 2006. 23:49

Citat:

Originalno napisao zidoo
@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.


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).

McChoban 08. 08. 2006. 01:39

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?


Vreme je GMT +2. Trenutno vreme je 16:26.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.