Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π½Π° JavaScriptΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 20

Автор ΠœΠ°Ρ€ΠΊ Кан

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ AJAX ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с большими ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ возмоТностями.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прилоТСния AJAX ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Web-страница ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с Web-сСрвСром, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² Web-Ρ„ΠΎΡ€ΠΌΡƒ.

На страницС выводится ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° с ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ввСсти имя. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² этом ΠΏΠΎΠ»Π΅ имя, Π½ΠΈΠΆΠ΅ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΈΠΌΠ΅Π½.

ΠŸΡƒΡΡ‚ΡŒ Π½Π° Web-страницС имССтся Ρ„ΠΎΡ€ΠΌΠ° HTML со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:


<form> Имя: <input type="text" id="txt1" onkeyup="showHint(this.value)"> </form>

Π‘ΠΎΠ²Π΅Ρ‚ΡƒΠ΅ΠΌ: <span id="txtHint"></span>


Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, это простая Ρ„ΠΎΡ€ΠΌΠ° HTML с ΠΏΠΎΠ»Π΅ΠΌ Π²Π²ΠΎΠ΄Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ "txt1".

Атрибут события этого поля Π²Π²ΠΎΠ΄Π° опрСдСляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ события onkeyup.

ΠŸΠ°Ρ€Π°Π³Ρ€Π°Ρ„ Π½ΠΈΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ содСрТит Ρ‚Π΅Π³ span с ΠΈΠΌΠ΅Π½Π΅ΠΌ "txtHint". Π’Π΅Π³ span ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС поля для подстановки Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… с Web-сСрвСра.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, выполняСтся функция с ΠΈΠΌΠ΅Π½Π΅ΠΌ "showHint()". Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ запускаСтся событиСм "onkeyup". Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ свой ΠΏΠ°Π»Π΅Ρ† с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ поля Π²Π²ΠΎΠ΄Π° (отпускаСт Π½Π°ΠΆΠ°Ρ‚ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ), вызываСтся функция showHint.

Ѐункция showHint() являСтся ΠΎΡ‡Π΅Π½ΡŒ простой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ JavaScript, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² Ρ€Π°Π·Π΄Π΅Π» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° <head> страницы HTML.

Ѐункция ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


function showHint(str) { if (str.length==0) { document.getElementById("txtHint").innerHTML="" return } xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ запросы HTTP") return } var url="gethint.asp" url=url+"?q="+str url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) }


Ѐункция выполняСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° вводится символ.

Если имССтся ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π²Π²ΠΎΠ΄ Π² тСкстовоС ΠΏΠΎΠ»Π΅ (str.length > 0), Ρ‚ΠΎ функция выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

[x]. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ url (имя Ρ„Π°ΠΉΠ»Π°) для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π½Π° сСрвСр

[x]. ДобавляСт ΠΊ url ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (q) с содСрТимым поля Π²Π²ΠΎΠ΄Π°

[x]. ДобавляСт случайноС число, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСрвСр Π½Π΅ использовал ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

[x]. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ XMLHTTP, ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ stateChanged, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

[x]. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ XMLHTTP с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ url.

[x]. ΠŸΠΎΡΡ‹Π»Π°Π΅Ρ‚ запрос HTTP Π½Π° сСрвСр

Если ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ пустым, Ρ‚ΠΎ функция просто ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ содСрТимоС поля для подстановки txtHint.

Ѐункция stateChanged() содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttp.responseText } }


Ѐункция stateChanged() выполняСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° измСняСтся состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° XMLHTTP.

Когда состояниС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ 4 (ΠΈΠ»ΠΈ "complete"), ΠΏΠΎΠ»Π΅ для подстановки txtHint ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ содСрТимоС тСкста ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ AJAX ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ XML.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ AJAX ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ XML, Ρ‚.Π΅. всСми основными соврСмСнными Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ.

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ GetXmlHttpObject.

Π­Ρ‚Π° функция ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ создания Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² XMLHTTP для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ².

Ѐункция ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:


function GetXmlHttpObject(handler) { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp }


Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ рассмотрСнного Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° AJAX.

Π­Ρ‚Π° страница HTML содСрТит ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ HTML ΠΈ ссылку Π½Π° Ρ„Π°ΠΉΠ» JavaScript.


<html> <head> <script src="clienthint.js"></script> </head> <body> <form> Имя: <input type="text" id="txt1" onkeyup="showHint(this.value)"> </form>

Π‘ΠΎΠ²Π΅Ρ‚ΡƒΠ΅ΠΌ: <span id="txtHint"></span>

</body> </html>


Π­Ρ‚ΠΎ ΠΊΠΎΠ΄ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² Ρ„Π°ΠΉΠ»Π΅ "clienthint.js":


var xmlHttp function showHint(str) { if (str.length==0) { document.getElementById("txtHint").innerHTML="" return } xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ запросы HTTP") return } var url="gethint.asp" url=url+"?q="+str url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttp.responseText } } function GetXmlHttpObject() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp }


Π”Π°Π»Π΅Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΎ сСрвСрной страницС AJAX.

Π‘Π΅Ρ€Π²Π΅Ρ€Π° AJAX Π½Π΅ сущСствуСт.

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ AJAX ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ любой сСрвСр Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

БСрвСрная страница, вызываСмая сцСнариСм JavaScript Π² рассматриваСмом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, являСтся простым Ρ„Π°ΠΉΠ»ΠΎΠΌ ASP с ΠΈΠΌΠ΅Π½Π΅ΠΌ "gethint.asp".

НиТС прСдставлСны Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠΎΠ΄Π° сСрвСрной страницы, ΠΎΠ΄ΠΈΠ½, написанный Π½Π° ASP, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ – Π½Π° PHP.

Код Π½Π° страницС "gethint.asp" написан Π½Π° VBScript для Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сСрвСра Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (IIS). Он просто провСряСт массив ΠΈΠΌΠ΅Π½ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ подходящиС ΠΈΠΌΠ΅Π½Π°:


<% dim a(30) 'Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ a(1)="Anna" a(2)="Brittany" a(3)="Cinderella" a(4)="Diana" a(5)="Eva" a(6)="Fiona" a(7)="Gunda" a(8)="Hege" a(9)="Inga" a(10)="Johanna" a(11)="Kitty" a(12)="Linda" a(13)="Nina" a(14)="Ophelia" a(15)="Petunia" a(16)="Amanda" a(17)="Raquel" a(18)="Cindy" a(19)="Doris" a(20)="Eve" a(21)="Evita" a(22)="Sunniva" a(23)="Tove" a(24)="Unni" a(25)="Violet" a(26)="Liza" a(27)="Elizabeth" a(28)="Ellen" a(29)="Wenche" a(30)="Vicky" 'ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° q ΠΈΠ· URL q=ucase(request.querystring("q")) 'поиск всСх Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΈΠ· массива, Ссли Π΄Π»ΠΈΠ½Π° q>0 if len(q)>0 then hint="" for i=1 to 30 if q=ucase(mid(a(i),1,len(q))) then if hint="" then hint=a(i) else hint=hint & " , " & a(i) end if end if next end if 'Π’Ρ‹Π²ΠΎΠ΄ "Π½Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ" Ссли Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ 'ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ подходящих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ if hint="" then response.write("Π½Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ") else response.write(hint) end if %>


ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ пСрСписан Π½Π° PHP.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ вСсь ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° PHP, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ url Π² "clienthint.js" с "gethint.asp" Π½Π° "gethint.php".


<?php // ЗаполняСм массив ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ $a[]="Anna"; $a[]="Brittany"; $a[]="Cinderella"; $a[]="Diana"; $a[]="Eva"; $a[]="Fiona"; $a[]="Gunda"; $a[]="Hege"; $a[]="Inga"; $a[]="Johanna"; $a[]="Kitty"; $a[]="Linda"; $a[]="Nina"; $a[]="Ophelia"; $a[]="Petunia"; $a[]="Amanda"; $a[]="Raquel"; $a[]="Cindy"; $a[]="Doris"; $a[]="Eve"; $a[]="Evita"; $a[]="Sunniva"; $a[]="Tove"; $a[]="Unni"; $a[]="Violet"; $a[]="Liza"; $a[]="Elizabeth"; $a[]="Ellen"; $a[]="Wenche"; $a[]="Vicky"; //ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° q ΠΈΠ· URL $q=$_GET["q"]; //поиск всСх Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π² массивС, Ссли Π΄Π»ΠΈΠ½Π° q>0 if (strlen($q) > 0) { $hint=""; for($i=0; $i<count($a); $i++) { if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) { if ($hint=="") { $hint=$a[$i]; } else { $hint=$hint." , ".$a[$i]; } } } } // Π’Ρ‹Π²ΠΎΠ΄ "Π½Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ", Ссли Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ // ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ подходящих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ if ($hint == "") { $response="Π½Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ"; } else { $response=$hint; } //Π²Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚Π²Π΅Ρ‚Π° echo $response; ?>


AJAX ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ взаимодСйствия с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прилоТСния AJAX Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Web-страница ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ AJAX.

На Web-страницС выводится список Π²Ρ‹Π±ΠΎΡ€Π° с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ любого ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° страницС выводится связанная с Π½ΠΈΠΌ информация ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ страницы содСрТит ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ HTML ΠΈ ссылку Π½Π° сцСнарий JavaScript:


<html> <head> <script src="selectcustomer.js"></script> </head> <body> <form> Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°: <select name="customers" onchange="showCustomer(this.value)"> <option value="ALFKI">Alfreds Futterkiste <option value="NORTS ">North/South <option value="WOLZA">Wolski Zajazd </select> </form>

<div id="txtHint"><b>Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ здСсь.</b></div>

</body> </html>


Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, это просто Ρ„ΠΎΡ€ΠΌΠ° HTML с Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΡΡ списком с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "customers".

ΠŸΠ°Ρ€Π°Π³Ρ€Π°Ρ„ Π½ΠΈΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ содСрТит Ρ‚Π΅Π³ div с ΠΈΠΌΠ΅Π½Π΅ΠΌ "txtHint". Π’Π΅Π³ div ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС поля для заполнСния ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ с Web-сСрвСра ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ (имя Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°), выполняСтся функция "showCustomer()". Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ запускаСтся событиСм "onchange". Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ измСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ списка, вызываСтся функция showCustomer.

Код JavaScript показан далСС.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π΄Π°Π»Π΅Π΅ ΠΊΠΎΠ΄ JavaScript находится Π² Ρ„Π°ΠΉΠ»Π΅ "selectcustomer.js":


var xmlHttp function showCustomer(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ запросы HTTP") return } var url="getcustomer.asp" url=url+"?q="+str url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { document.getElementById("txtHint").innerHTML=xmlHttp.responseText } } function GetXmlHttpObject() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp }


БСрвСрная страница, вызываСмая сцСнариСм JavaScript, являСтся просто Ρ„Π°ΠΉΠ»ΠΎΠΌ ASP file с ΠΈΠΌΠ΅Π½Π΅ΠΌ "getcustomer.asp".

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° написана Π½Π° VBScript для Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ сСрвСра Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (IIS). Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° PHP, ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвСрный язык.

Код выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SQL Π½Π° Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ HTML: