PHP ?? ?? ???? AJAX ??? ??
AJAX ??? ??
AJAX? ????? ?? ???? ??? ?? ??? ??? ? ????.
??
?? ???? ??? ??? ????????. ???.
??? ??? ?? ??? ?? ?? ??? ????.
???? ???? ???? ??? ?????.
???? ???? ????? ??? ??????.
??? ?? ??? ??? ???? ? ?? ??? ????.
?? ??? ???? ????
? ??? ??? XML ??(3.xml)?? ?????. ? ??? ?? ???? ???? ?? 6?? ??? ?????.
? ?? ? ???? ?????
HTML ?? ???
PHP ??
-
XML ??
HTML ? ???
???? 1.php? ??? ????
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script> function showResult(str) { //如果輸入框是空的(str.length==0),該函數(shù)會清空 livesearch 占位符的內(nèi)容,并退出該函數(shù) if (str.length==0) { document.getElementById("livesearch").innerHTML=""; document.getElementById("livesearch").style.border="0px"; return; } //輸入框不是空的,則showResult() 會執(zhí)行以下代碼 //創(chuàng)建 XMLHttpRequest 對象 if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行 xmlhttp=new XMLHttpRequest(); } else {// IE6, IE5 瀏覽器執(zhí)行 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } //創(chuàng)建在服務(wù)器響應(yīng)就緒時執(zhí)行的函數(shù) xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("livesearch").innerHTML=xmlhttp.responseText; document.getElementById("livesearch").style.border="1px solid #A5ACB2"; } } //向服務(wù)器上的文件發(fā)送請求 xmlhttp.open("GET","2.php?q="+str,true); xmlhttp.send(); } </script> </head> <body> <!-- 鍵盤按鍵被松開時onkeyup 事件發(fā)生 ,調(diào)用showResult()函數(shù)--> <form> <p>在下面的文本框中輸入 "HTML",搜索包含 HTML 的頁面:</p> <input type="text" size="30" onkeyup="showResult(this.value)"> <div id="livesearch"></div> </form> </body> </html>
?? ?? ??:
?? ??? ?? ?? ??(str.length==0) ? ??? ??? ?? ?? ???? ??? ??? ?????. ??.
?? ??? ?? ?? ??? showResult()? ?? ??? ?????.
XMLHttpRequest ?? ??
Create ??? ?? ??? ????? ? ?????.
??? ?? ??? ??? ????.
????(q)? ?????. URL ?? ??(??? ?? ??)
PHP ??
? ???? JavaScript? ??? ?? ???? "2.php"?? ??? PHP ?????.
"2.php"? ?? ??? XML ???? ?? ???? ???? ??? ???? ??? ?????.
?? ??? 2.php? ?????
<?php //創(chuàng)建XML DOM對象 $xmlDoc=new DOMDocument(); //加載XML文件到新的XML DOM對象 $xmlDoc->load("3.xml"); //將標簽名為“l(fā)ink”的對象的集合賦值給$x $x=$xmlDoc->getElementsByTagName('link'); // 從 URL 中獲取參數(shù) q 的值 $q=$_GET["q"]; // 如果 q 參數(shù)存在則從 xml 文件中查找數(shù)據(jù) if (strlen($q)>0) { $hint=""; for($i=0; $i<($x->length); $i++) { $y=$x->item($i)->getElementsByTagName('title'); $z=$x->item($i)->getElementsByTagName('url'); if ($y->item(0)->nodeType==1)//元素的節(jié)點類型,1:元素節(jié)點,2:屬性節(jié)點 { // 找到匹配搜索的鏈接 if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) { if ($hint=="") { $hint="<a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; } else { $hint=$hint . "<br /><a href='" . $z->item(0)->childNodes->item(0)->nodeValue . "' target='_blank'>" . $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; } } } } } // 如果沒找到則返回 "no suggestion" if ($hint=="") { $response="no suggestion"; } else { $response=$hint; } echo $response;// 輸出結(jié)果 ?>
JavaScript? ???(?: strlen($q) > 0)? ??? ??? ????
PHP? "links.xml" ??? XML DOM ??? ?????.
?? <title> ??(nodetypes = 1)? ???? JavaScript?? ??? ???? ???? ???? ????.
??? ???? ??? ????. ??? ??? ???? ?????. "$response" ??? ?? ???? ??? ? ? ?? ???? ?? ?? ??? ??? ?????.
???? ??? ??? $response ??? "?? ??"?? ?????.
$response? "livesearch" ?? ???? ??? ?????.
XML ??
?? ??? 3.php
? ?????.<?xml version="1.0" encoding="UTF-8"?> <pages> <link> <title>HTML a 標簽</title> <url>http://miracleart.cn/tags/tag-a.html</url> </link> <link> <title>HTML br 標簽</title> <url>http://miracleart.cn/tags/tag-br.html</url> </link> <link> <title>CSS background 屬性</title> <url>http://miracleart.cn/cssref/css3-pr-background.html</url> </link> <link> <title>CSS border 屬性</title> <url>http://miracleart.cn/cssref/pr-border.html</url> </link> <link> <title>JavaScript Date 對象</title> <url>http://miracleart.cn/jsref/jsref-obj-date.html</url> </link> <link> <title>JavaScript Array 對象</title> <url>http://miracleart.cn/jsref/jsref-obj-array.html</url> </link> </pages>
?? ??
? ??? ?? ?? ?? ???? ?????.
?? ??
onkeyup ??? : ??? ?? ??? ? ??
?? ??, ?? ? ??
AJAX XMLHttpRequest ?? ??, ?? ?? ?? ?? ?? ? ??? ?? ??? ?? ???: ?? ??? 1-5 ??
HTML DOM getElementById() ???: ??? ID? ?? ? ?? ??? ?????. ??
l XML ?? ??
XML DOM ?? ??
? XML DOM ??? XML ?? ??
?? ?? ??? ?? ????: getElementsByTagName()
?? ??? ?? ?? ??? ????: HTML DOM childNodes
? ?? ?? ??? ?? ? ????: HTML DOM nodeValue
??? ? ?? ?? ?? ??: HTML DOM item() ???
?? ??:
Strlen(): ???? ??? ?????.
Stristr( ) : ?? ????? ?? ???? ??? ??