មេរៀន AJAX កំរិតខ្ពស់

aឧ​ទា​ហរ​ណ៏ AJAX ASP / PHP  ឧទាហរណ៍​ដូច​ខាង​ក្រោម​នឹង​បង្ហាញ​ពី​របៀប​ដែល​ទំព័រ​បណ្ដាញ​អាច​ទាក់ទង​ជាមួយ​ម៉ាស៊ីន​បម្រើ​បណ្ដាញ​មួយ​ខណៈ​ពេល​ដែល​តួ​អក្សរ​មួយ​ប្រភេទ​ដែល​អ្នក​ប្រើ​នៅ​ក្នុង​វាល​បញ្ចូល​ជា​: នៅ​ពេល​ដែល​អ្នក​ប្រើ​ប្រភេទ​តួអក្សរ​នៅ​ក្នុង​វាល​បញ្ចូល​ខាង​លើ​មួយ​អនុគមន៍ “showHint ()​” ​​ត្រូវ​បាន​ប្រតិបត្តិ​។ មុខងារ​នេះ​ត្រូវ​បាន​កេះ​ដោយ​ព្រឹត្តិការណ៍ “onkeyup​”​:

function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById(“txtHint”).innerHTML=””;
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open(“GET”,”gethint.asp?q=”+str,true);
xmlhttp.send();
}

ការ​ពន្យល់​ប្រភពកូដ​​: ប្រសិន​បើ​វាល​បញ្ចូល​នេះ​គឺ​ទទេ (str.length == 0​) អនុគមន៍​ជម្រះ​មាតិកា​នៃ​កន្លែង​ដាក​​់ txtHint និង​ចេញ​ពី​អនុគមន៍​នោះ​។ ប្រសិន​បើ​វាល​បញ្ចូល​នេះ​គឺ​មិន​ទទេ​, showHint នេះ () មុខងារ​ប្រតិបត្តិ​ដូច​ខាង​ក្រោម​:
-បង្កើត​វត្ថុ XMLHttpRequest មួយ
-បង្កើត​មុខងារ​ដែល​ត្រូវ​បាន​ប្រតិបត្តិ​នៅពេល​ដែល​ការ​ឆ្លើយតប​របស់​ម៉ាស៊ីន​បម្រើ​គឺ​ត្រូវ​បាន​រួចរាល់​ជា
-ផ្ញើ​រ​សំណូមពរ​ក្រៅ​ទៅ​ឯកសារ​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​មួយ
-ចូរ​កត់​សំគាល់​ថា​ប៉ារ៉ាម៉ែត្រ (Q​) ត្រូវ​បាន​បន្ថែម​ទៅ​ជា URL នេះ (ដោយ​មាតិកា​របស់​វាល​បញ្ចូល​នេះ​)

AJAX Server Page – ASP និង PHP ទំព័រ​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​បាន​ហៅ​ដោយ​ការ​អនុញ្ញាត JavaScript ខាង​លើ​នេះ​គឺ​ជា​ឯកសារ ASP ហៅ​ថា “gethint.asp​” ។ ខាង​ក្រោម​នេះ​យើង​បាន​បង្កើត​ឡើង​ពីរ​កំណែ​នៃ​ឯកសារ​ម៉ាស៊ីន​បម្រើ​មួយ​បាន​សរសេរ​នៅ​ក្នុង ASP និង​មួយ​នៅ​ក្នុង PHP ។
ឯកសារសរសេរកូដតាម ASP

<%
response.expires=-1
dim a(30)
‘Fill up array with names
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”

‘get the q parameter from URL
q=ucase(request.querystring(“q”))

‘lookup all hints from array if length of 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

‘Output “no suggestion” if no hint were found
‘or output the correct values
if hint=”” then
response.write(“no suggestion”)
else
response.write(hint)
end if
%>
ឯកសារសរសេរកូដតាម PHP នៅ​ទីនេះ​លេខ​កូដ​ខាង​លើ​បាន​សរសេរ​ឡើង​វិញ​នៅ​ក្នុង PHP គឺ​:

<?php
// Fill up array with names
$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”;

//get the q parameter from URL
$q=$_GET[“q”];

//lookup all hints from array if length of 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];
}
}
}
}

// Set output to “no suggestion” if no hint were found
// or to the correct values
if ($hint == “”)
{
$response=”no suggestion”;
}
else
{
$response=$hint;
}

//output the response
echo $response;
?>
មូលដ្ឋាន​ទិន្នន័យ​ AJAX Database គំរូ មូលដ្ឋាន​ទិន្នន័យ​ AJAX Database AJAX អាច​ត្រូវ​បាន​ប្រើ​សម្រាប់​ការ​ទំនាក់​ទំនង​អន្តរកម្ម​ជាមួយ​នឹង​មូលដ្ឋាន​ទិន្នន័យ​។ ឧទាហរណ៍​ដូច​ខាង​ក្រោម​នឹង​បង្ហាញ​ពី​របៀប​ដែល​ទំព័រ​បណ្ដាញ​អាច​ទៅ​យក​ព័ត៌មាន​ពី​មូលដ្ឋាន​ទិន្នន័យ​មួយ​ជាមួយ AJAX​: នៅ​ពេល ​ដែល​អ្នក​ប្រើ​ជ្រើស​អតិថិជន​មួយ​នៅ​ក្នុង​បញ្ជី​ទម្លាក់​ចុះ​នៅ​ខាងលើ​មុខងារ​ហៅ​ថា “showCustomer ()​” ​​មួយ​ត្រូវ​បាន​ប្រតិបត្តិ​។ មុខងារ​នេះ​ត្រូវ​បាន​កេះ​ដោយ​ព្រឹត្តិការណ៍ “onchange​”​:

function showCustomer(str)
{
var xmlhttp;
if (str==””)
{
document.getElementById(“txtHint”).innerHTML=””;
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open(“GET”,”getcustomer.asp?q=”+str,true);
xmlhttp.send();
}
អនុគមន៍​ showCustomer()​ដូច​ខាងក្រោម​:

-ពិនិត្យ​មើល​ប្រសិន​បើ​អតិថិជន​ត្រូវ​បាន​ជ្រើស
-បង្កើត​វត្ថុ XMLHttpRequest មួយ
-បង្កើត​មុខងារ​ដែល​ត្រូវ​បាន​ប្រតិបត្តិ​នៅពេល​ដែល​ការ​ឆ្លើយតប​របស់​ម៉ាស៊ីន​បម្រើ​គឺ​ត្រូវ​បាន​រួចរាល់​ជា
-ផ្ញើ​រ​សំណូមពរ​ក្រៅ​ទៅ​ឯកសារ​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​មួយ
-ចូរ​កត់​សំគាល់​ថា​ប៉ារ៉ាម៉ែត្រ (Q​) ត្រូវ​បាន​បន្ថែម​ទៅ​ជា URL នេះ (ដោយ​មាតិកា​នៃ​បញ្ជី​ទម្លាក់​ចុះ​នេះ​)

ទំព័រ AJAX Serve ទំព័រ​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​បាន​ហៅ​ដោយ​ការ​អនុញ្ញាត JavaScript ខាង​លើ​នេះ​គឺ​ជា​ឯកសារ ASP ហៅ​ថា “getcustomer.asp​” ។ កូដ​ប្រភព​ក្នុង “getcustomer.asp​” រត់​សំណួរ​ប្រឆាំង​នឹង​មូលដ្ឋាន​ទិន្នន័យ​មួយ​ហើយ​ត្រឡប់​លទ្ធផល​ក្នុង​តារាង HTML ដែល​មួយ​:

<%
response.expires=-1
sql=”SELECT * FROM CUSTOMERS WHERE CUSTOMERID=”
sql=sql & “‘” & request.querystring(“q”) & “‘”

set conn=Server.CreateObject(“ADODB.Connection”)
conn.Provider=”Microsoft.Jet.OLEDB.4.0″
conn.Open(Server.Mappath(“/db/northwind.mdb”))
set rs=Server.CreateObject(“ADODB.recordset”)
rs.Open sql,conn

response.write(“<table>”)
do until rs.EOF
for each x in rs.Fields
response.write(“<tr><td><b>” & x.name & “</b></td>”)
response.write(“<td>” & x.value & “</td></tr>”)
next
rs.MoveNext
loop
response.write(“</table>”)
%>

AJAX XML  AJAX can be used for interactive communication with an XML file។
ឧ​ទា​ហរ​ណ៏ AJAX XML ​ ឧទាហរណ៍​ដូច​ខាង​ក្រោម​នឹង​បង្ហាញ​ពី​របៀប​ដែល​ទំព័រ​បណ្ដាញ​អាច​ទៅ​យក​ព័ត៌មាន​ពី​ឯកសារ XML មួយ​ជាមួយ AJAX​:
អនុគមន៍ stateChange() Function ពេល​ដែល​អ្នក​ប្រើ​ការ​ចុច​លើ “យក​ស៊ីឌី​ព័ត៌មាន​” ប៊ូតុង​ខាង​លើ loadXMLDoc “Get CD info” ទាញអនុគមន៍ loadXMLDoc() ត្រូវ​បាន​ប្រតិបត្តិ​ត្រូវបានប្រើ
ទាញអនុគមន៍ loadXMLDoc() function បង្កើត​  XMLHttpRequest មួយ បន្ថែមអនុគមន៍ ដើម្បីប្រតិ្តប​ត្តិពេល  server ឆ្លើយតប រួចហើផ្ញើ request off ទៅ server។ កាលណា  server response​ រួចចប់ សព្វគ្រប់  តារាង HTML table ត្រូវបានដំឡើង   (elements)ធាតុ ត្រូវ​បាន​ដក​ស្រង់​ចេញ​ពី​ឯកសារ XML ហើយ​វា​ ចុង​ក្រោយ​នៅ ​កន្លែង​ដាក​​់ txtCDInfo ជាមួយ HTML & # តារាង​ដែល​ពេញ​ទៅ​ដោយ​ទិន្នន័យ XML មាន​:

function loadXMLDoc(url)
{
var xmlhttp;
var txt,xx,x,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
txt=”<table border=’1′><tr><th>Title</th><th>Artist</th></tr>”;
x=xmlhttp.responseXML.documentElement.getElementsByTagName(“CD”);
for (i=0;i<x.length;i++)
{
txt=txt + “<tr>”;
xx=x[i].getElementsByTagName(“TITLE”);
{
try
{
txt=txt + “<td>” + xx[0].firstChild.nodeValue + “</td>”;
}
catch (er)
{
txt=txt + “<td>&nbsp;</td>”;
}
}
xx=x[i].getElementsByTagName(“ARTIST”);
{
try
{
txt=txt + “<td>” + xx[0].firstChild.nodeValue + “</td>”;
}
catch (er)
{
txt=txt + “<td>&nbsp;</td>”;
}
}
txt=txt + “</tr>”;
}
txt=txt + “</table>”;
document.getElementById(‘txtCDInfo’).innerHTML=txt;
}
}
xmlhttp.open(“GET”,url,true);
xmlhttp.send();
}