Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ 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: