Järjestääkseen vuorovaikutteisen viestinnän kävijän ja verkkosivuston (tai pikemminkin selaimen, jolla on verkkopalvelin) välillä, ohjelmoijan on tarjottava skenaarioita tietojen vaihdolle heidän välillä. Harkitaan useita yksinkertaisia vaihtoehtoja muuttujien siirron järjestämiseksi asiakkaan JavaScrip-komentotiedostosta palvelimen PHP-komentosarjaan ja päinvastoin.
Se on välttämätöntä
Perustiedot PHP-, JavaScript- ja HTML-kielistä
Ohjeet
Vaihe 1
Sivunmuodostusvaiheessa ei ole vaikeaa siirtää muuttujaa ja sen arvoa php-skriptistä JavaScript-skriptiin. PHP-komentosarja itse luo pyydetyn sivun HTML-koodin, mukaan lukien sen sisältämät skriptit. Tämä tarkoittaa, että hän voi kirjoittaa kaikki muuttujat JavaScript-koodiin, jotka tulisi välittää niiden arvojen kanssa. Esimerkiksi tämä php-komentosarja välittää asiakasohjelmalle muuttujan nimeltä "serverTime", joka sisältää nykyisen palvelimen ajan muodossa HOUR: MINUTE:
<? php
$ JSvarName = 'palvelimen aika';
$ JSvarValue = päivämäärä ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
tulosta ''. $ JScode.'alert ("Ja palvelimella nyt" + '. $ JSvarName.'); '
?>
Vaihe 2
Yksinkertaisin tapa siirtää muuttujien nimet ja arvot vastakkaiseen suuntaan (asiakkaan selaimen JS-skriptistä web-palvelimen PHP-skriptiin) voi näyttää tältä sivun HTML-koodissa:
var now = uusi päivämäärä ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = 'https://sa/test2.php?' + varName + '=' varValue;
Tämä komentosarja lähettää komentotiedostolle test2.php muuttujan "clientTime" nimen ja sen arvon, joka sisältää nykyisen tietokoneen ajan samassa muodossa HOUR: MINUTE. Tätä tiedonsiirtomenetelmää kutsutaan "synkroniseksi" - se johtaa sivun välittömään lataamiseen. Tarkemmin sanottuna nykyisen sivun sijaan test2.php-komentosarjan tulos ladataan selaimeen. Tämän php-komentosarjan koodi saattaa näyttää tältä:
<? php
if ($ _ GET) echo 'Vastaanotettu muuttuja'.avain ($ _ GET). '='. $ _ GET [avain ($ _ GET)];
?>
Voit yhdistää koodin kaikki kolme osaa muuttujien siirtämiseksi palvelimelta selaimeen ja takaisin yhdeksi php-tiedostoksi tällä tavalla:
<? php
if ($ _ GET) echo 'Vastaanotettu muuttuja'.avain ($ _ GET). '='. $ _ GET [avain ($ _ GET)];
$ JSvarName = 'palvelimen aika';
$ JSvarValue = päivämäärä ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
tulosta ''. $ JScode.'alert ("Ja palvelimella nyt" + '. $ JSvarName.'); '
?>
function sendData () {
var now = uusi päivämäärä ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = "https://sa/test2.php?" + varName + "=" + varValue;
return false;
}
Lähetä tietoja palvelimelle Tässä yhdistetyssä (PHP + JavaScript) komentosarjassa php-koodi luo JavaScript-koodin "välittämällä" muuttujan nimeltä "serverTime" arvolla, joka sisältää nykyisen palvelimen ajan. Kun sivu ladataan selaimeen, JavaScript-komentosarja näyttää viestin tällä kertaa. Sitten käyttäjä napsauttaa Lähetä tiedot palvelimelle -linkkiä käynnistää sendData () -toiminnon, joka lähettää GET-pyynnön palvelimelle ja välittää muuttujan nimen ("clientTime") ja sen arvon (client time) php: lle käsikirjoitus. PHP-komentosarja, joka on lukenut muuttujan nimen ja arvon $ _GET superglobal-taulukosta, tulostaa sen ja aloittaa koko kuvatun komentosarjan uudelleen.
Vaihe 3
Kaikki edellä kuvattu toteuttaa "synkronisen" tiedonsiirron skenaarion. "Asynkronisen" menetelmän toteuttamisella tiedonvaihtoon asiakas- ja palvelinkomentosarjojen välillä on oma nimi AJAX (Asynkroninen Javascript ja XML). Tämä aihe ansaitsee erillisen artikkelin.