Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX]Obsługa błędów
S_Olewniczak
post
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 1
Dołączył: 28.01.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował S_Olewniczak 10.07.2009, 14:46:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Ale korzystasz z jakiejś biblioteki (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) w advAJAX jest coś w takiego jak onError.
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat


JA ci dam "obsługę". Wracaj do szkoły i się dokształć.
Jakie problem napotyka ajax?
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
vokiel
post
Post #5





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
Maxik
post
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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
}
Go to the top of the page
+Quote Post
S_Olewniczak
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 1
Dołączył: 28.01.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Crozin
post
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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).
Go to the top of the page
+Quote Post
vokiel
post
Post #9





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 05:42