Ajax i mysql

Na stronach internetowych coraz częściej można znaleźć dynamiczne elementy reagujące na to, co robi użytkownik. Kiedyś ograniczało się to do manipulacji wyglądem strony (np. zwijanie/rozwijanie/ukrywanie boksów), obecnie dzięki AJAXowi na stronie może się dziać znacznie więcej. Dzięki niemu można zapisywać i odczytywać dane z bazy bez przeładowywania strony (np. WordPress zapisuje edytowane posty co zadany czas, dzięki czemu można odtworzyć wpis w razie niespodziewanego resetu przeglądarki).

Obsługę AJAXa można rozpisać samemu lub wybrać jedną z dostępnych bibliotek. Każde z gotowych rozwiązań trochę inaczej podchodzi do zagadnienia, ale ostateczny wynik jest zawsze taki sam: w tle zostaje wywołany odpowiedni adres i po chwili do przeglądarki trafia odpowiedź. W przypadku jQuery do dyspozycji dostajemy kilka różnych metod.

Najczęściej wywołanie wygląda następująco:

$.ajax({
  url: "plik.php",
  type: "POST",
  data: "id="+id,
  dataType: "json",
  success: function(result){
    $("#"+id_elementu).append(result.html);
  }
});

Całe wywołanie zawiera: adres skryptu php do wykonania (url), typ wywołania (type), dane przekazywane do skryptu (data), format odpowiedzi (dataType) oraz funkcję wywoływaną po prawidłowym wywołaniu (success).

Tylko jak to działa ?

Po wywołaniu funkcji wywołującej AJAX całość odbywa się niejako „w tle”. Odpowiedni moduł odbiera adres pliku oraz parametry, przekazuje je do serwera (tak jakby to było zwykłe wywołanie z adresu przeglądarki), a na końcu odbiera treść i przesyła ją do funkcji decydującej dalej co z tą treścią zrobić. Przesłane dane mogą być zapisane w różnych formatach, ale ostatecznie liczy się tylko i wyłącznie łatwość dalszej obsługi. W przypadku prostego „klikam i masz pokazać” dobry jest html. Jeśli w grę wchodzi jeszcze obsługa dodatkowych komunikatów („nie udało się wykonać operacji, powód jest taki, ale nie wstawiaj go jako treść, tylko pokaż jako alert„), to najlepszy jest JSON. Pozostaje jeszcze kwestia oczekiwania na odpowiedź. Nie zawsze jest ona natychmiastowa, dlatego też dobrze jest pokazać dymek z komunikatem „proszę czekać” albo prostą animację (lub w ostateczności zmienić kursor na busolę).

Obsługa mysql leży po stronie wywoływanego skryptu php. Tak jak we wszystkim należy traktować przychodzące parametry z dużą rezerwą. Liczbowe parametry przepuścić przez funkcję intval, dodać 0, itp., słowne przyrównać do zadanych tekstów, przepuścić przez strip_tags/htmlspecialchars/addslashes. W zależności od stosowanej biblioteki treść generuje funkcja (sajax) lub może być wysyłana bezpośrednio poprzez echo (jQuery).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*