Pro organizaci interaktivní komunikace mezi návštěvníkem a webem (nebo spíše prohlížečem s webovým serverem) musí programátor poskytnout scénáře pro výměnu dat mezi nimi. Uvažujme o několika jednoduchých možnostech organizace přenosu proměnných ze skriptu JavaScrip klienta na skript serveru PHP a naopak.
Je to nutné
Základní znalost jazyků PHP, JavaScript a HTML
Instrukce
Krok 1
Ve fázi vytváření stránky není obtížné přenést proměnnou spolu s její hodnotou ze skriptu php do skriptu JavaScript. Samotný skript PHP generuje kód HTML požadované stránky, včetně skriptů, které obsahuje. To znamená, že může do kódu JavaScript zapisovat libovolné proměnné, které by měly být předávány spolu s jejich hodnotami. Například tento skript php předá klientskému skriptu proměnnou s názvem „serverTime“obsahující aktuální čas serveru ve formátu HOUR: MINUTE:
<? php
$ JSvarName = 'serverTime';
$ JSvarValue = datum ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
print ''. $ JScode.'alert ("A na serveru nyní" + '. $ JSvarName.'); '
?>
Krok 2
Nejjednodušší způsob předávání názvů a hodnot proměnných v opačném směru (od skriptu JS v prohlížeči klienta k skriptu PHP na webovém serveru) může vypadat takto v kódu HTML stránky:
var now = nové datum ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = 'https://sa/test2.php?' + varName + '=' varValue;
Tento skript odešle do skriptu test2.php název proměnné „clientTime“a její hodnotu obsahující aktuální čas počítače ve stejném formátu HODINA: MINUTA. Tato metoda přenosu dat se nazývá „synchronní“- bude mít za následek okamžité opětovné načtení stránky. Přesněji, místo aktuální stránky se do prohlížeče načte výsledek skriptu test2.php. Kód tohoto php skriptu může vypadat takto:
<? php
if ($ _ GET) echo 'Received variable'.key ($ _ GET). '='. $ _ GET [key ($ _ GET)];
?>
Můžete kombinovat všechny tři uvažované části kódu pro předávání proměnných ze serveru do prohlížeče a zpět do jednoho php souboru, jako je tento:
<? php
if ($ _ GET) echo 'Received variable'.key ($ _ GET). '='. $ _ GET [key ($ _ GET)];
$ JSvarName = 'serverTime';
$ JSvarValue = datum ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
print ''. $ JScode.'alert ("A na serveru nyní" + '. $ JSvarName.'); '
?>
funkce sendData () {
var now = nové datum ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = "https://sa/test2.php?" + varName + "=" + varValue;
návrat false;
}
Odeslat data na server V tomto kombinovaném skriptu (PHP + JavaScript) vygeneruje php kód kód JavaScript „předáním“proměnné s názvem „serverTime“s hodnotou obsahující aktuální čas serveru. Když je stránka načtena do prohlížeče, skript JavaScript zobrazí zprávu s tímto časem. Poté uživatel klikne na odkaz „Odeslat data na server“spustí funkci sendData (), která odešle požadavek GET na server a předá název proměnné („clientTime“) a její hodnotu (čas klienta) php skript. Skript php poté, co přečetl název a hodnotu proměnné ze superglobálního pole $ _GET, jej vytiskne a znovu spustí celý popsaný skript.
Krok 3
Všechno popsané výše implementuje scénář „synchronního“přenosu dat. Implementace „asynchronní“metody výměny dat mezi klientskými a serverovými skripty má svůj vlastní název AJAX (asynchronní Javascript a XML). Toto téma si zaslouží samostatný článek.