AJAX ASP/PHP 實(shí)例
AJAX 用於創(chuàng)造動(dòng)態(tài)性更強(qiáng)的應(yīng)用程式。
AJAX ASP/PHP 實(shí)例
下面的範(fàn)例將為您示範(fàn)當(dāng)使用者在輸入方塊中鍵入字元時(shí),網(wǎng)頁(yè)如何與 web 伺服器進(jìn)行通訊: 請(qǐng)?jiān)谙旅娴妮斎肟蛑墟I入字母(A - Z):
<html><!DOCTYPE html> <html> <head> <script> 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","/try/ajax/gethint.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <h3>Start typing a name in the input field below:</h3> <form action=""> First name: <input type="text" id="txt1" onkeyup="showHint(this.value)" /> </form> <p>Suggestions: <span id="txtHint"></span></p> </body> </html>
實(shí)例解析- showHint() 函數(shù)
當(dāng)使用者在上面的輸入框中鍵入字元時(shí),會(huì)執(zhí)行函數(shù)"showHint()" 。函數(shù)由"onkeyup" 事件觸發(fā):
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.html?q="+str,true); xmlhttp.send(); }
#原始程式碼解析:
如果輸入框?yàn)榭?str.length==0 ),則函數(shù)清空txtHint 佔(zhàn)位符的內(nèi)容,並退出函數(shù)。
如果輸入框不為空,showHint() 函數(shù)執(zhí)行以下任務(wù):
#建立XMLHttpRequest 物件
當(dāng)伺服器回應(yīng)就緒時(shí)執(zhí)行函數(shù)
把請(qǐng)求發(fā)送到伺服器上的檔案
請(qǐng)注意我們向URL 新增了一個(gè)參數(shù)q (帶有輸入框的內(nèi)容)
AJAX 伺服器頁(yè)面- ASP 和PHP
由上面的JavaScript 呼叫的伺服器頁(yè)面是ASP 文件,名稱(chēng)為"gethint. asp"。
下面,我們建立了兩個(gè)版本的伺服器文件,一個(gè)用 ASP 寫(xiě),另一個(gè)用 PHP 寫(xiě)。
ASP 檔案
"gethint.asp" 中的原始程式碼會(huì)檢查一個(gè)名字?jǐn)?shù)組,然後向?yàn)g覽器傳回對(duì)應(yīng)的名字:
<% 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 寫(xiě),與上面的ASP 程式碼作用是一樣的。
<?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; ?>