Визит менен веб-сайттын (тагыраак айтканда, веб-сервери бар браузердин) ортосундагы интерактивдүү байланышты уюштуруу үчүн, программист алардын ортосунда маалымат алмашуу сценарийлерин сунушташы керек. Кардар JavaScript сценарийинен PHP серверине жана тескерисинче, өзгөрмөлөрдү берүүнү уюштуруунун бир нече жөнөкөй варианттарын карап көрөлү.

Ал зарыл
PHP, JavaScript жана HTML тилдерин билүү
Нускамалар
1 кадам
Баракчаны түзүү этабында өзгөрмөнү PHP скриптинен JavaScript сценарийине которуу кыйынга турбайт. PHP скрипти өзү суралган барактын HTML кодун, анын ичинде камтылган скрипттерди жаратат. Демек, ал JavaScript кодуна кандай гана өзгөрүлмө болбосун, алардын мааниси менен кошо жазылышы мүмкүн. Мисалы, бул php сценарийи кардардын скриптине "serverTime" аталышындагы өзгөрүлмө учурдагы сервер убактысын камтыган HOUR: MINUTE форматында өтөт:
<? php
$ JSvarName = 'serverTime';
$ JSvarValue = дата ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
print ''. $ JScode.'alert ("Азыр серверде" + '. $ JSvarName.'); '
?>

2-кадам
Өзгөрмөчөлөрдүн аталыштарын жана баалуулуктарын карама-каршы багытта (кардардын браузериндеги JS сценарийинен веб-сервердеги PHP скриптине чейин) берүүнүн эң жөнөкөй жолу баракчанын HTML кодунда төмөнкүдөй болушу мүмкүн:
var now = new date ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = 'https://sa/test2.php?' + varName + '=' varValue;
Бул скрипт test2.php сценарийине "clientTime" өзгөрмөсүнүн аталышын жана анын маанисин компьютердин учурдагы убактысын камтыган HOUR: MINUTE форматында жөнөтөт. Берилиштерди өткөрүүнүн бул ыкмасы "синхрондуу" деп аталат - бул дароо баракты кайрадан жүктөөгө алып келет. Тагыраагы, учурдагы баракчанын ордуна, test2.php скриптинин натыйжасы браузерге жүктөлөт. Бул php скриптинин коду төмөнкүдөй болушу мүмкүн:
<? php
if ($ _ GET) echo 'Received variable'.key ($ _ GET). '='. $ _ GET [key ($ _ GET)];
?>
Серверден браузерге өзгөрмөлөрдү өткөрүп, бир PHP файлына кайтып келүү үчүн коддун каралып жаткан үч бөлүгүн тең бириктире аласыз:
<? php
if ($ _ GET) echo 'Received variable'.key ($ _ GET). '='. $ _ GET [key ($ _ GET)];
$ JSvarName = 'serverTime';
$ JSvarValue = дата ('H: i');
$ JScode = $ JSvarName. '= "'. $ JSvarValue. '";';
print ''. $ JScode.'alert ("Азыр серверде" + '. $ JSvarName.'); '
?>
sendData () функциясы {
var now = new date ();
var varName = 'clientTime';
var varValue = now.getHours () + ":" + now.getMinutes ();
window.location.href = "https://sa/test2.php?" + varName + "=" + varValue;
return false;
}
Маалыматты серверге жөнөтүү Бул айкалыштырылган (PHP + JavaScript) скриптинде, php коду JavaScript кодун иштеп чыгат жана "serverTime" аталышындагы өзгөрмөнү учурдагы сервер убактысын камтыйт. Барак браузерге жүктөлгөндө, JavaScript скрипти ушул убакыт менен билдирүү көрсөтөт. Андан кийин колдонуучу "Маалыматтарды серверге жөнөтүү" шилтемесин басканда sendData () функциясы иштей баштайт, ал серверге GET сурам жөнөтүп, өзгөрмө аталышын ("clientTime") жана анын маанисин (кардар убактысын) phpге өткөрүп берет. скрипт. PHP сценарийи, $ _GET superglobal массивинен өзгөрмөнүн атын жана маанисин окуп чыгып, аны басып чыгарып, сүрөттөлгөн сценарийди кайрадан баштайт.

3-кадам
Жогоруда баяндалгандардын бардыгы "синхрондуу" маалыматтарды берүүнүн сценарийин ишке ашырат. Клиенттик жана сервердик скрипттердин ортосунда маалыматтарды алмашуу "асинхрондук" ыкмасын ишке ашыруу өзүнүн AJAX аталышына ээ (Asynchronous Javascript жана XML). Бул тема өзүнчө макалага татыктуу.