AJAX ñå áàçèðà íà JavaScript + HTTP çàÿâêè.
AJAX = Asynchronous JavaScript And XML
AJAX å ñúêðàùåíèå íà Asynchronous JavaScript And XML. AJAX íå å íîâ ïðîãðàìåí åçèê. Òîâà å òåõíîëîãèÿ çà ñúçäàâàíå íà ïî-äîáðè, ïî-áúðçè è ïî-äèíàìè÷íè óåá ñòðàíèöè.
AJAX èçïîëçâà JavScript çà äà ïðåäàâà èíôîðìàöèÿ ìåæäó ñúðâúðà è óåá áðàóçúðà. AJAX òåõíîëîãèÿòà ïîçâîëÿâà äà ñå ðàçìåíÿ èíôîðìàöèÿ ìåæäó ñúðâúðà è áðàóçúðà áåç äà ñå ïðåçàðåæäà ñòðàíèöàòà.
AJAX å áðàóçúðíà òåõíîëîãèÿ.
AJAX å òåõíîëîãèÿ, êîÿòî ðàáîòè ñ áðàóçúðà Âè. Òÿ èçïîëçâà ñèíõðîíèçèðàí ïðåíîñ íà èíôîðìàöèÿ (HTTP çàÿâêè) ìåæäó áðàóçúðà è óåá ñúðâúðà, ïîçâîëÿâàéêè íà óåá ñòðàíèöàòà Âè äà ïîëó÷àâà ìàëêè áèòîâå èíôîðìàöèÿ îò ñúðâúðà.
AJAX å áàçèðàí íà îòâîðåíè ñòàíäàðòè.
AJAX å áàçèðàí íà ñëåäíèòå îòâîðåíè ñòàíäàðòè:
* JavaScript
* XML
* HTML
* CSS
Ñòàíäàðòèòå êîèòî ñå èçïîëçâàò îò AJAX ñà äîáðå ïîçíàòè è ïîääúðæàíè îò âñè÷êè îñíîâíè óåá áðàóçåðè.
AJAX ïðàâè óåá ñòðàíèöèòå ïî-äîáðè.
Óåá ïðèëîæåíèÿòà èìàò ìíîãî ïðåèìóùåñòâà ïðåä Desktop ïðèëîæåíèÿòà è òå èìàò ïî-ãîëÿìà àóäèòîðèÿ. Òå ñà ïî-ëåñíè çà ïîääðúæêà è ïðîãðàìèðàíå. Íî âúïðåêè òîâà òå íå âèíàãè ñà òîëêîâà "áîãàòè" è ïðèÿòåëñêè íàñòðîåíè, êàòî Desktop ïðèëîæåíèÿòà. Ñ AJAX óåá ïðèëîæåíèÿòà ìîãàò äà ñå íàïðàâÿò ïî-áîãàòè (ïî-ìàëêè, ïî-áúðçè, ïî-ëåñíè çà óïîòðåáà).
Ìîæåø âåäíàãà äà çàïî÷íåø äà èçïîëçâàø AJAX.
Íÿìà íèùî çà ó÷åíå...
AJAX å áàçèðàí íà îòâîðåíè ñòàíäàðòè, êîèòî ñà èçïîëçâàíè îò ïîâå÷åòî ïðîãðàìèñòè ìíîãî ãîäèíè. Ïîâå÷åòî óåá ïðèëîæåíèÿ ìîãàò äà áúäàò ïðåíàïèñâàíè íà AJAX, âìåñòî ñòàíäàðòíèÿ HTML.
AJAX èçïîëçâà XML è HTTP çàÿâêè.
Çà äà ñå ñâúðæàò ñúñ ñúðâúðà òðàäèöèîííèòå óåá ïðèëîæåíèÿ òðÿáâà äà èçïîëçâàò HTML ôîðìà. Ñàìî ÷å ñâúðçâàíåòî òàì ñòàâà ñëåä ïðåçàðåæäàíåòî íà ñòðàíèöàòà. Ïîðàäè òàçè ïðè÷èíà îáèêíîâåíèòå óåá ñòðàíèöè ñà ïî-áàâíè è ïî-íåïðèÿòíè.
Ñ AJAX ñòðàíèöèòå ìîãàò äà êîìóíèêèðàò ñúñ ñúðâúðà áåç ïðåçàðåæäàíå íà ñòðàíèöàòà. Òîâà ñòàâà ñ HTTP çàÿâêè è ìîäèôèöèðàíå ñàìî íà ÷àñò îò ñòðàíèöàòà ñ JavaScript, êîãàòî ñúðâúðà îòãîâîðè.
Ïðèìåð, êîéòî îáÿñíÿâà HTML ôîðìàòà.
Ôîðìàòà îòäîëó èìà ñëåäíèÿ êîä.
Êîä:
<form>
First Name:
<input type="text" id="txt1"
onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
Êàêòî âèæäàòå, òîâà å ñàìî åäíà ïðîñòà ôîðìà, ñ ïîëå, êîåòî ñå êàçâà
"txt1".
Âñåêè ïúò êîãàòî ïîòðåáèòåëÿ íàòèñêà íÿêîå êîï÷å îò êëàâèàòóðàòà, ùå ñå çàäåéñòâà ôóíêöèÿòà íàðå÷åíà
"showHint()" .
Îáÿñíåí ïðèìåð. ShowHint() ôóíêöèÿòà.
ShowHint() ôóíêöèÿòà å ìíîãî ïðîñòà JS ôóíêöèÿ, ïîñòàâåíà â <HEAD> ñåêöèÿòà.
Ôóíêöèÿòà ñúäúðæà ñëåäíèÿ êîä:
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML=""
return
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
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) ôóíêöèÿòà äåéñòâà ïî ñëåäíèÿ íà÷èí:
* Ïðîâåðÿâà àäðåñà (èìåòî íà ôàéëà) êîéòî ñå èçïðàùà äî ñúðâúðà
* Äîáàâÿ ïàðàìåòúð (q) äî url-òî ñúñ ñúäúðæàíèåòî íà ôîðìàòà.
* Äîáàâÿ ïðîèçâîëíî ÷èñëî çà äà èçáåãíå ñúðâúðà èçïîëçâàíåòî íà íåäîñòúïåí ôàéë.
* Ñúçäàâà XMLHTTP îáåêò, è êàçâà íà îáåêòà äà íàðå÷åíà stateChanged êîãàòî ïðîìÿíàòà å íàïðàâåíà.
* Îòâàðÿ XMLHTTP îáåêòà ñ çàäàäåíèÿ url.
* Èçïðàùà HTTP çàÿâêà äî ñúðâúðà.
Îáÿñíåí ïðèìåð. StateChanged() ôóíêöèÿòà.
Ôóíêöèÿòà ñúäúðæà ñëåäíèÿ êîä:
Êîä:
function stateChanged() {
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}}
Òàçè ôóíêöèÿ ñå âêëþ÷âà âñåêè ïúò, êîãàòî ñúñòîÿíèåòî íà XMLHTTP îáåêòà ñå ïðîìåíÿ.
Êîãàòî ñúñòîÿíèåòî ñå ïðîìåíÿ íà 4 (èëè íà "ãîòîâ"), îáåêòà txtHint ñå çàïúëâà ñ ïîëó÷åíàòà èíôîðìàöèÿ.
Îò êîè áðàóçåðè ñå ïîääúðæà AJAX
ÀJAX ìîæå äà âúðâè ñàìî íà áðàóçúðè, êîèòî íàïúëíî ïîääúðæàò XML. Çà ñåãà òå ñà ñàìî òðè - Opera, IE è Mozilla Firefox.
 òàçè ñòàòèÿ ùå ñå îáõâàíàò ñàìî òåçè òðè áðàóçåðà. Ñåãà ùå ðàçãëåäàìå ôóíêöèÿòà 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 ïðèìåð - AJAX êîä.
Òîçè êîä ñå îòíàñÿ êúì ìèíàëèòå ïðèìåðè. Ìîæåø äà ãî êîïèðàø è äà ãî ïðîáâàø.
AJAX HTML ñòðàíèöàòà.
Òîâà å ïðîñòà HTML ñòðàíèöà. Òÿ ñúäúðæà ôîðìà è ëèíê êúì JS ôàéëà. Êîä:
<html>
<head>
<script src="clienthint.js"></script>
</head>
<body>
<form>
First Name:
<input type="text" id="txt1"
onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
The AJAX JavaScript
Òîâà å JS-à â ôàéëà "clienthint.js":
Êîä:
var xmlHttp
function showHint(str) {
if (str.length==0) {
document.getElementById("txtHint").innerHTML=""
return
}
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null) {
alert ("Browser does not support HTTP Request")
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
}