Am acest cod:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
De ce nu scrie "bar" în fișier text, dar alerte "42"?
NB: revizii mai Devreme de această întrebare au fost în mod explicit despre PHP de pe server și JavaScript pe client. Natura esențială a problemei și a soluțiilor este aceeași pentru orice pereche de limbi, atunci când unul se execută pe client și alte pe server (chiar dacă acestea sunt de aceeași limbă). Vă rugăm să luați acest lucru în considerare atunci când veți vedea răspunsurile vorbesc despre anumite limbi.
Codul este împărțit în două în întregime părți separate, partea de server și partea de client.
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
Cele două părți să comunice prin cereri HTTP și răspunsuri. PHP este executat pe server și ieșiri unele HTML și JavaScript cod care este trimis ca răspuns la client în cazul în care HTML este interpretat și JavaScript este executat. Odată PHP-a terminat de realizare a răspuns, script-ul se termină și nu se va întâmpla nimic pe server pana la o noua cerere HTTP vine în.
De exemplu, codul se execută astfel:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
Pasul 1, PHP execută tot codul între `<?php ?> tag-uri. Rezultatul este acesta:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
Anii file_put_contents
apelul nu duce la nimic, doar a scris " + foo + " într-un fișier. De <?php echo 42; ?>
suna a dus la ieșire "42", care este acum în fața locului în cazul în care codul folosit pentru a fi.
Acest rezultat HTML/JavaScript cod este acum trimis la client, în cazul în care devine evaluate. De "alertă" apel funcționează, în timp ce " foo " variabila nu este folosit oriunde.
Tot codul PHP este executat pe server înainte ca clientul să înceapă executarea de JavaScript. Nu's nu cod PHP lăsat în răspunsul pe care JavaScript ar putea interacționa cu.
Pentru a apela un cod PHP, clientul va trebui să trimită o nouă cerere HTTP catre server. Acest lucru se poate întâmpla folosind una dintre cele trei metode posibile:
Aici's o întrebare subliniind aceste metode în mai mare detail
De asemenea, puteți folosi JavaScript pentru a face browser-ul deschide o nouă pagină folosind fereastra.locația sau să prezinte un formular, după posibilități 1. și 2.
Pentru a determina de ce PHP codul nu't de lucru în JavaScript codul trebuie să înțelegem ce client side și pe partea de server limbi sunt, și modul în care acestea funcționează.
Server-side limbi (PHP etc.): Au regăsirea înregistrărilor din bazele de date, menținerea stării de-a lungul apatrid HTTP conexiune, și de a face o mulțime de lucruri care necesită securitate. Își au reședința pe server, aceste programe nu au codul lor sursa expuse la utilizator.
Astfel încât să puteți vedea cu ușurință că partea de server limbi se ocupe de cereri HTTP și le prelucrează, și, ca @deceze spus, PHP este executat pe server și ieșiri unele HTML, și, poate, un cod JavaScript, care este trimis ca răspuns la client, în cazul în care HTML este interpretat și JavaScript este executat.
Pe de altă parte, Client Side Limbi (cum ar fi JavaScript) ședere în browser-ul și rula în browser-ul. Client-side scripting în general, se referă la clasa de programe de calculator pe web, care sunt executate pe partea de client, de către utilizator's browser-ul web, în loc de server-side.
JavaScript este vizibil pentru utilizator și poate fi modificat cu ușurință, atât pentru securitate lucruri nu trebuie să se bazeze pe JavaScript.
Deci, atunci când face o HTTP cerere de pe server, serverul citește mai întâi fișier PHP cu atenție pentru a vedea dacă există orice sarcini care trebuie să fie executat, și trimite un răspuns pentru partea de client. Din nou, ca @deceze spus, Odată PHP-a terminat de realizare a răspuns, script-ul se termină și nimic nu se va întâmpla pe server până când un nou HTTP cerere vine în.
Deci, acum ce pot să fac dacă am nevoie pentru a apela PHP? Depinde de cum ai nevoie pentru a face: fie prin reîncărcarea paginii sau prin utilizarea unui apel AJAX.
Citit Bine:
Javascript va executa pe client, nu pe server. Acest lucru înseamnă că " foo " nu este evaluată pe partea de server și, prin urmare, valoarea sa poate't fi scris într-un fișier pe server.
Cel mai bun mod de a gândi despre acest proces este ca daca're generând un fișier text dinamic. Textul're generatoare devine doar cod executabil odată ce browser-ul pe care îl interpretează. Doar ce tine loc între<?php` categorie este evaluată pe server.
Apropo, face un obicei de includere piese aleatorii de PHP logica în HTML sau Javascript poate duce la serios complicate de cod. Eu vorbesc din experiență dureroasă.
În aplicația web în fiecare sarcina executa într-o manieră de cerere și răspuns.
Programare pe parte de Client cu cod html cu Java script-ul și a cadrelor sale, biblioteci execută în internet explorer, Mozilla, chrome browsere. În java scenariu partea de server de programare servlet-uri execută în Tomcat, web-logica , j seful, WebSphere serverele
Voi încerca să explic în mod simplu.
Partea de Client este ceea ce utilizatorul a vedea/ cod care este vizibil pe browser-ul.
Programare pe Parte de Client include HTML(HTML, HTML5, DHTML), CSS(CSS, CSS3) si JavaScript(JavaScript, ES5, ES6, ES7, Script, JQuery, ReactJs, AngularJs, BackboneJs sau orice alte JavaScript cadru Front-end).
Programare pe Parte de Client se concentreze pe "cum va arăta pagina" și comportamentul de-a lungul browsere.
Programare pe Parte de Server include un cod care să furnizeze date Client-Side. Utilizatorul nu este în măsură pentru a vedea server-side.
Programare pe Parte de Server implică Limbaj de Programare(Java, PHP, .Net, C#, C, C++, NodeJS, etc), baze de Date(SQL, Oracle, MySql, PostgreySql, Nu-Sql, MongoDB, etc), terț API(Rest, Soap), Logica de Afaceri.
Programare pe Parte de Server se concentreze pe "modul de a face datele disponibile pentru Client-Side".
Client-Side cerere de date sau cerere pentru a stoca date, de la partea de Server prin intermediul API-ul oferit de Server-Side. Această cerere și răspuns de date se face prin următoarele HTTP/FTP protocol ca API-ul REST, SOAP API.