Jak wywołać funkcję PHP z poziomu JavaScript?

Treść dodana: 08 grudnia 2015.

Jednym z głównych problemów początkujących programistów jest zrozumienie, na jakim poziomie działają PHP oraz JavaScript. Najważniejsze co trzeba pamiętać, to że PHP jest językiem server-side (wykonuje się po stronie serwera), natomiast JS językiem client-side (działa po stronie klienta, najczęściej przeglądarki). Po wysłaniu żądania do serwera dokonuje on parsowania danych (nawiązuje połączenie z bazą danych, przetwarza zmienne, szablony itd.) i treść tego działania odsyła do klienta. Dopiero ten wynik, czyli najczęściej cała strona w HTML, przetwarzany jest przez przeglądarkę. Nie ma możliwości aby, na prawidłowo działającym serwerze, zwykły użytkownik obejrzał kod źródłowy PHP. Przeglądarka zawsze operuje na gotowej odpowiedzi. Jakie możemy wyciągnąć z tego wnioski?

  1. Odpowiedź wygenerowana przez PHP może zawierać w sobie kod JS gdyż przeglądarka treść odpowiedzi (response) dopiero otrzyma. Następnie przetworzy wszystkie tagi HTML, doczyta obrazki, CSS i w końcu również pliki JavaScript lub kod wewnątrz tagów “script”.
  2. Nigdy na odwrót. Nie możesz umieszczać funkcji PHP w JS albo HTML ponieważ serwer nic o niej nie będzie wiedział. Wysłał już dane, jego praca na tym etapie jest zakończona.

Jednak współczesna sieć to ciągłe komunikowanie się obu stron. Przykładem takiej komunikacji może być wyszukiwarka użyta na stronie sekcji porad, podpowiedzi co do artykułów zwracane przez serwer w następstwie reakcji użytkownika. Sposobów na osiągnięcie transmisji klient – serwer jest kilka. Różnią się metodą nasłuchu, tym która strona informuje że ma coś nowego do zakomunikowania. Do transmisji można wykorzystać WebSockets, XMLHttpRequest, Fetch API oraz kilka innych. Nie można zatem wywołać funkcji PHP bezpośrednio, ale można wysłać do serwera żądanie, które ten przetworzy i odeśle nam wynik działania funkcji.

Przykładowo posłużę się kodem napisanym w popularnej bibliotece jQuery (pamiętaj dołączyć ją do strony):

kod zawarty w naszym skrypcie JS

var jqxhr = $.getJSON( "strona.php")
  .done(function(data) {
    console.log( data );
  })
  .fail(function() {
    console.log( "Wystąpił błąd" );
  })l

strona.php

<?php
    $data = array('imie' => 'Jan', 'nazwisko' => 'Kowalski');
    echo json_encode($data);

Plik strona.php wygenerował prostą tablicę, na potrzeby odpowiedzi zakodował ją jako dane JSON. W JavaScript odpytaliśmy nasz plik o te dane i jeśli wszystko przebiegło prawidłowo dostępne będą pod zmienną JS `data`. Pamiętaj oczywiście o tym, że do wykonania plików PHP musisz mieć uruchomiony serwer. Nie możesz tego pliku zapisać na dysku i wczytać bezpośrednio w przeglądarce. Do prostych zadań wystarczy nawet serwer wbudowany w PHP.

Komentarze

Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?

Dodaj komentarz

*
Nazwa zostanie wyświetlona wraz z komentarzem. Możesz też utworzyć nowe konto w serwisie, dzięki czemu uzyskasz dodatkową funkcjonalność.
*
Akceptowana jest ograniczona składnia Textile. Wszystkie tagi HTML zostaną usunięte.