Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]Obsługa błędów
Forum PHP.pl > Forum > Przedszkole
S_Olewniczak
Tworzę aplikację w ajaksie i mam pewien problem. Stworzyłem skrypt w PHP usuwający dane z bazy danych. W przypadku poprawnego usunięcia, skrypt w PHP wypisuje ciąg znaków: "removed", w przeciwnym wypadku wyświetla stronę informującą o błędzie. Załóżmy, że ajax wywołuje ten skrypt i napotyka na problem, jak go teraz przedstawić użytkownikowi? Czy nadpisać znacznik html, wyświetlając stronę z błędem(to mój pomysł)? Jak Wy obsługujecie błędy ajax? Czekam na propozycje.
skowron-line
Ale korzystasz z jakiejś biblioteki questionmark.gif w advAJAX jest coś w takiego jak onError.
wookieb
Cytat


JA ci dam "obsługę". Wracaj do szkoły i się dokształć.
Jakie problem napotyka ajax?
viking
Ale chodzi ci o błąd XHR (np. użytkownik idzie off-line) czy o błąd php?
Na pierwsze to np. w YUI YAHOO.util.Connect.xEvent.subscribe(); Na drugie zwracam odpowiedź JSON i buduje/modyfikuję DOM.
vokiel
W jQuery obsłUga błędów wygląda tak:
  1. <?php
  2. $.ajax({
  3.    type: "POST",
  4.    url: "test.php",
  5.    error: function (XMLHttpRequest, textStatus, errorThrown) {
  6.            $('#response').html(textStatus + ' ' + errorThrown).addClass('error').fadeIn();
  7.    },
  8.    success: function(data){
  9.        if (data=="removed"){
  10.            $('#response').html('Usunieto').addClass('ok').fadeIn();
  11.        }else{
  12.            $('#response').html(data).addClass('error').fadeIn();
  13.        }
  14.    }
  15. });
  16. ?>
Maxik
Po stronie PHP wyłącz dyrektywę html_errors ini_set" title="Zobacz w manualu PHP" target="_manual http://pl.php.net/manual/en/errorfunc.conf...ini.html-errors Wtedy możesz sprawdzić i wyświetlić błąd:
Kod
if(obj.responseText=='removed'){
// zrób coś
} else{
// zrób coś innego
}
S_Olewniczak
Dziękuję za pomoc i przepraszam za błąd. Mam jeszcze jedno pytanie. Jak w wygląd strony wkomponować komunikat o błędzie tak aby był przyjemny w odbiorze dla użytkownika? Gdzie wyświetlić komunikat o błędzie?
Crozin
Na pewno nie przez alert(). Może to być w formie pojawiającego się boxa (czy to w jakimś "globalnym" miejscu strony czy niedaleko elementu, w który przed chwilą klikałem (jakiś przycisk etc.). Dodatkowo często można spotkać prosty i estetyczny mechanizm informowania o błędzie/powodzeniu w postaci odpowiedniego koloru tła elementu, które płynnie w ciągu sekundy-dwóch przechodzi w jakiś neutralny kolor (pasujący do reszty projektu).
vokiel
Ostatnio stosuję 3 klasy w css do komunikatów pomyślnych, błędów, informacji.
- ok - zielona ramka, zielonkawe jaśniejsze tło (czasem ico ok)
- error - czerwona ramka, czerwonawe tło (czasem czerwony wykrzyknik)
- info - niebieska ramka, niebieskawe tło (czasem znak zapytania, lub niebieski wykrzyknik)

Miejsce? Zwykle koło topu strony, lub bezpośrednio koło miejsca z którego nastąpiło wywołanie akcji.

Do tego w jQuery wpisanie odp do diva, nadanie klasy, pokazanie, przytrzymanie widocznego przez 2,5sec, ukrycie.
  1. <?php
  2. $('#response').html(data).addClass('error').fadeIn().animate({opacity:1.0},2500).fadeOut();
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.