[AJAX] Odczyt z bazy i wyswietlenie danych

0

Zaczynam zabawę z AJAX-em, ale od razu piszę, że nie chcę gotowych kodów, a jedynie naprowadzenie na rozwiązanie sprawy.

Interesuje mnie następująca sprawa.

Mam w bazie danych listę kategorii.

Na stronie mam pola do wyboru kategorii.

Mam pole INPUT tekstowy pod nim jest indexAZ czyli A B C D E ... Z i teraz nie wiem jak rozwiązać sprawę, żeby po wybraniu (kliknięciu) litery, pojawiła się lista kategorii na tę literę, w jakimś DIV-ie czy czymkolwiek innym.

I teraz zastanawiam się czy mam tworzyć JSON-a, czy moze sa inne rozwiazania? Ktoś może mi podeslac jakies tutoriale??

0

Tak, JSON będzie w tym wypadku jak najbardziej OK, ale zrozum jedną rzecz: to, w jakim formacie przychodzi odpowiedź z serwera nie ma tak wielkiego znaczenia. Tzn. w niektórych zastosowaniach jedne formaty są bardziej poręczne, a inne mniej, ale ogólnie serwer może Ci wyrzucić JSON-a, XML albo HTML (tak naprawdę może też wypluć tekst, który będzie Twoim własnym formatem i który będziesz ręcznie parsował w JavaScripcie). Chodzi o to, że ślesz Ajaxem na serwer żądanie. W tym wypadku może wystarczyć jeden parametr: kliknięta litera. I serwer zwraca dane. W tym wypadku np. tablicę kategorii (stringów) w JSON-ie. W momencie przyjścia odpowiedzi z serwera obiekt XMLHttpRequest wywołuje Twoją funkcję wywołania zwrotnego (tę, którą przypisałeś do onreadystatechange). Możesz więc odpowiednio zareagować na odpowiedź. Dane przyszły wraz z odpowiedzią, więc jeśli to tablica (przesłana jako JSON), to możesz zrobić pętlę for po wszystkich elementach tej tablicy i powstawiać je do DIV-a, czy gdzie tam chcesz.

To dość proste, ale jeśli wolisz, to kod po stronie serwera możesz zaimplementować tak, by zwracał nie tablicę w JSON-ie, tylko gotowy HTML, który po prostu wstawisz do DIV-a.

W przypadku teoretycznie długich list, podpowiadania/dopełniania nazw itd. może być warto użyć akurat JSON-a, bo jest jednak zwięźlejszy (choć zależy to od obłożenia serwera, zastosowania kompresji itd.).

1 użytkowników online, w tym zalogowanych: 0, gości: 1