Twój kod jest podzielony na dwie całkowicie oddzielne części, po stronie serwera i po stronie klienta .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Obie strony komunikują się za pośrednictwem żądań i odpowiedzi HTTP. PHP jest uruchamiane na serwerze i generuje kod HTML, a może kod JavaScript, który jest wysyłany w odpowiedzi na klienta, w którym HTML jest interpretowany i JavaScript jest wykonywany. Gdy PHP zakończy wysyłanie odpowiedzi, skrypt kończy się i nic się nie dzieje na serwerze, dopóki nie pojawi się nowe żądanie HTTP.
Przykładowy kod działa w następujący sposób:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Krok 1, PHP wykonuje cały kod między <?php ?>
znacznikami. Rezultat jest następujący:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
file_put_contents
Wezwanie nie spowodowało niczego, po prostu napisał „+ foo +” do pliku. <?php echo 42; ?>
Wezwanie spowodowało wyjście „42”, który jest teraz w miejscu, gdzie ten kod kiedyś.
Wynikowy kod HTML / JavaScript jest teraz wysyłany do klienta, gdzie jest oceniany. alert
Wezwanie działa, gdy foo
zmienna nie jest stosowany wszędzie.
Cały kod PHP jest wykonywany na serwerze, zanim klient zacznie nawet wykonywać JavaScript. W odpowiedzi nie ma kodu PHP, z którym JavaScript mógłby współpracować.
Aby wywołać jakiś kod PHP, klient będzie musiał wysłać nowe żądanie HTTP do serwera. Może się to zdarzyć przy użyciu jednej z trzech możliwych metod:
- Link, który powoduje, że przeglądarka ładuje nową stronę.
- Formularz, który przesyła dane do serwera i ładuje nową stronę.
- AJAX żądanie, która jest techniką JavaScript, żeby uczynić regularny żądanie HTTP do serwera (jak będzie 1. i 2.), ale bez opuszczania bieżącej strony.
Oto pytanie szczegółowo opisujące tę metodę
Możesz także użyć JavaScript, aby przeglądarka otworzyła nową stronę za pomocą window.location
lub przesłała formularz, emulując możliwości 1. i 2.
window.open
lub załadować stronę za pomocą elementu iframe.<form>
danych i wysłane na serwer. Możesz manipulować formularzami za pomocą Javascript, aby zawierały różne dane. Tak, dane te będą częścią wynikowego żądania HTTP, jeśli będą częścią formularza podczas przesyłania; nie ma znaczenia, czy był w oryginalnym HTML, czy dodany później przez Javascript.Aby ustalić, dlaczego kod PHP nie działa w kodzie JavaScript , musimy zrozumieć, jakie są języki strony klienta i serwera i jak one działają.
Języki po stronie serwera (PHP itp.) : Pobierają rekordy z baz danych, utrzymują stan przez bezpaństwowe połączenie HTTP i robią wiele rzeczy, które wymagają bezpieczeństwa. Znajdują się na serwerze, programy te nigdy nie mają dostępu do kodu źródłowego dla użytkownika.
Dzięki temu możesz łatwo zobaczyć, że języki po stronie serwera obsługują żądania HTTP i przetwarzają je, a jak powiedział @deceze, PHP jest wykonywane na serwerze i generuje trochę HTML, a może kod JavaScript, który jest wysyłany w odpowiedzi na klienta, gdzie HTML jest interpretowany i JavaScript jest uruchamiany.
Z drugiej strony języki po stronie klienta (takie jak JavaScript) znajdują się w przeglądarce i działają w przeglądarce. Skrypty po stronie klienta ogólnie odnoszą się do klasy programów komputerowych w Internecie, które są uruchamiane po stronie klienta przez przeglądarkę internetową użytkownika, a nie po stronie serwera .
JavaScript jest widoczny dla użytkownika i może być łatwo modyfikowany, więc dla bezpieczeństwa nie możemy polegać na JavaScript.
Kiedy więc wysyłasz żądanie HTTP na serwerze, serwer najpierw dokładnie odczytuje plik PHP, aby sprawdzić, czy są jakieś zadania, które należy wykonać, i wysyła odpowiedź po stronie klienta. Ponownie, jak powiedział @deceze: * Gdy PHP zakończy wysyłanie odpowiedzi, skrypt kończy się i nic się nie stanie na serwerze, dopóki nie pojawi się nowe żądanie HTTP . *
Co teraz mogę zrobić, jeśli muszę zadzwonić do PHP? To zależy od tego, jak musisz to zrobić: albo przeładowując stronę, albo używając wywołania AJAX.
Dobra lektura:
źródło
JavaScript zostanie uruchomiony na kliencie, a nie na serwerze. Oznacza to, że
foo
nie jest ono oceniane po stronie serwera, a zatem jego wartości nie można zapisać do pliku na serwerze.Najlepszym sposobem na zastanowienie się nad tym procesem jest dynamiczne generowanie pliku tekstowego. Wygenerowany tekst staje się kodem wykonywalnym dopiero po jego zinterpretowaniu przez przeglądarkę. Tylko to, co umieszczasz między
<?php
tagami, jest oceniane na serwerze.Nawiasem mówiąc, nawyk osadzania losowych elementów logiki PHP w HTML lub JavaScript może prowadzić do poważnie zawiłego kodu. Mówię z bolesnego doświadczenia.
źródło
W aplikacji internetowej każde zadanie wykonuje się w formie zapytania i odpowiedzi.
Programowanie po stronie klienta odbywa się za pomocą kodu HTML ze skryptem Java i jego strukturami, biblioteki działają w przeglądarce Internet Explorer, Mozilli, przeglądarkach Chrome. W scenariuszu Java serwlety programowania po stronie serwera są wykonywane w Tomcat, web-logic, j boss, WebSphere severs
źródło