O mně     Twitter

ARCHIV – tento článek je již staršího data. Doufám, že mnoho myšlenek v něm je stále platných, avšak některé informace již mohou být zastaralé.  

Počítání s chybami v Ajaxu

29.1.2007

U aplikací psaných v Ajaxu se často zapomíná na ošetřování chyb při spojení se serverem – stávají se docela běžně, např. když dojde k chybě ve skriptu, nepodaří se spojit s databází, vypadne spojení stránky se serverem, na cestě se ztratí paket nebo pouze prohlížeč uživatele nepodporuje Ajax úplně dobře. Co s tím?

Když dojde k jakékoliv z chyb, které jsem vyjmenoval v úvodu, při normálním stahování stránky ze serveru (bez Ajaxu), objeví se v prohlížeči obvykle chybová stránka. Když ale stahujete data pouze na pozadí pomocí Ajaxu, nic takového se v případě chyby nestane – na stránce běží progress bar, ale uživateli brzy dojde trpělivost. Potom buď stránku zavře nebo stiskne Zpět či Aktualizovat, což mu obvykle situaci ještě zhorší.

Řešení nabízí Peter Quinsey v článku User-Proofing Ajax (A List Apart, 5.12.2006):

  1. Ještě před spuštěním Ajaxu důsledně kontrolujte, jestli prohlížeč uživatele tuto technologii zvládá. Pokud ne, použijte klasické řešení bez Ajaxu.
  2. Kontrolujte stavový kód HTTP, který vám vrátil server v reakci na váš požadavek zaslaný pomocí Ajaxu. V případě nestandardních kódů buď požadavek opakujte, nebo informujte uživatele chybovou hláškou.
  3. Součástí XML dat, která přišla jako odpověď serveru, by měla být i informace, jestli došlo při provádění skriptu k chybě, a případně chybová hláška, kterou zobrazit uživateli.
  4. Měli byste ve skriptu sledovat, jak dlouho trvá serveru odpověď na váš požadavek – pokud tato doba překročí únosnou mez (např. 20 vteřin), pravděpodobně došlo k chybě ve spojení a měli byste buď poslat nový požadavek, nebo zobrazit chybovou hlášku.

Pro podrobnosti a další informace vám doporučuji odkazovaný článek. Závěrem bych jenom připomněl, že chybová hláška (o které se v textu často mluví) by měla být na stránce velmi jasně vidět, měla by popsat problém lidským způsobem a měla by hlavně doporučit uživateli, jak dál pokračovat.

6 komentářů od čtenářů

 

Přidat komentář

1. Dero | 29.1.2007, 9.20

Přesně tak. Když už používat AJAX, tak opravdu precizně s maximálním důrazem na použitelnost. AJAX je totiž výborný sluha, ale velice zlý pán.

2. habendorf | 29.1.2007, 11.19

Hm, myšlenka zcela jistě správná. Ovšem v obecné rovině se rozhodně netýká jen AJAXu, ale vpodstatě veškerého skriptování / programování / (webových) aplikací.

3. error414 | 29.1.2007, 12.04

K tomu bych jeste pridal ze uzivatel nechce videt chybu:

Nastala chyba cislo X230, server odpovedel error404.

// nakonec jeste michani s anglictinou, to ho urcite dorazi
conection failed

4. Ronnie | 29.1.2007, 16.59

Takové chyby v ajaxu obsahuje server prace.cz, takže se týká i poměrně velkých a navštěvovaných serverů. V polovině dotazníku zůstal jen nekonečný progress bar a registraci nešlo dokončit.

5. MiSHAK | 1.2.2007, 17.58

Jo to je pravda. Někdy je zarážející, že někteří kódeři na to zapomínají i v javascriptových pseudoprototypech AJAXu.

6. Patrik | 5.6.2007, 23.43

Tohle mi prijde jako zaklad, ale je dobry na to upozornit...

Přidat komentář

Diskuse již není aktuální, další komentáře tedy není možné přidávat. Pokud mi i přesto chcete sdělit svůj názor na článek, kontaktujte mě.

© Martin Snížek 2005-2023.   ISSN 1802-2103.