<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # PHP 和 AJAX Live Search **AJAX 可為用戶提供更友好、交互性更強的搜索體驗。** ## AJAX Live Search 在下面的 AJAX 例子中,我們將演示一個實時的搜索。 實時的搜索與傳統搜索相比,具有很多優勢: * 當鍵入數據時,就會顯示出匹配的結果 * 當繼續鍵入數據時,對結果進行過濾 * 如果結果太少,刪除字符就可以獲得更寬的范圍 本例包括四個元素: * 簡單的 HTML 表單 * JavaScript * PHP 頁面 * XML 文檔 在本例中,結果在一個 XML 文檔 ([links.xml](/php/links.xml)) 中進行查找。為了讓這個例子小而簡單,我們只提供 8 個結果。 ## HTML 表單 這是 HTML 頁面。它包含一個簡單的 HTML 表單,針對此表單的 CSS 樣式,以及指向 JavaScript 的鏈接: ``` <html> <head> <script src="livesearch.js"></script> <style type="text/css"> #livesearch { margin:0px; width:194px; } #txt1 { margin:0px; } </style> </head> <body> <form> <input type="text" id="txt1" size="30" onkeyup="showResult(this.value)"> <div id="livesearch"></div> </form> </body> </html> ``` ### 例子解釋 - HTML 表單 正如你看到的,HTML 頁面包含一個簡單的 HTML 表單,其中的文本框名為 "txt1"。 表單是這樣工作的: 1. 當用戶在文本框中按鍵并松開按鍵時,會觸發一個事件 2. 當事件觸發時,會執行名為 showResult() 的函數 3. 表單下面是名為 "livesearch" 的 &lt;div&gt; 元素。它用作 showResult() 所返回數據的占位符 ## JavaScript JavaScript 代碼存儲在與 HTML 文檔連接的 "livesearch.js" 中: ``` var xmlHttp function showResult(str) { if (str.length==0) { document.getElementById("livesearch"). innerHTML=""; document.getElementById("livesearch"). style.border="0px"; return } xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="livesearch.php" 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("livesearch"). innerHTML=xmlHttp.responseText; document.getElementById("livesearch"). style.border="1px solid #A5ACB2"; } } function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } ``` ### 例子解釋: GetXmlHttpObject 與 [PHP 和 AJAX 請求](/php/php_ajax_suggest.asp "PHP 和 AJAX 請求") 中的例子相同。 #### showResult() 函數 該函數每當一個字符輸入文本框就會執行一次。 如果文本域中沒有輸入 (str.length == 0),該函數把返回字段設置為空,并刪除周圍的任何邊框。 不過,如果文本域中存在輸入,則函數執行: 1. 定義發送到服務器的 url (文件名) 2. 把帶有輸入框內容的參數 (q) 添加到 url 3. 添加一個隨機數,以防止服務器使用緩存文件 4. 調用 GetXmlHttpObject 函數來創建 XMLHTTP 對象,并在觸發一個變化時告知此函數執行名為 stateChanged 的一個函數 5. 使用給定的 url 來打開 XMLHTTP 對象 6. 向服務器發送 HTTP 請求 #### stateChanged() 函數 每當 XMLHTTP 對象的狀態發生變化時,該函數就會執行。 當狀態變為 4 (或 "complete") 時,就會使用響應文本來填充 txtHint 占位符的內容,并在返回字段周圍設置一個邊框。 ## PHP 頁面 由 JavaScript 代碼調用的服務器頁面是名為 "livesearch.php" 的 PHP 文件。 "livesearch.php" 中的代碼檢查那個 XML 文檔 "links.xml"。該文檔 w3school.com.cn 上的一些頁面的標題和 URL。 這些代碼會搜索 XML 文件中匹配搜索字符串的標題,并以 HTML 返回結果: ``` <?php $xmlDoc = new DOMDocument(); $xmlDoc->load("links.xml"); $x=$xmlDoc->getElementsByTagName('link'); //get the q parameter from URL $q=$_GET["q"]; //lookup all links from the xml file if length of q>0 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) { //find a link matching the search text 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>"; } } } } } // 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; ?> ``` ### 例子解釋: 如果從 JavaScript 送來了任何文本 (strlen($q) &gt; 0),會發生: 1. PHP 創建 "links.xml" 文件的一個 XML DOM 對象 2. 遍歷所有 "title" 元素 (nodetypes = 1),以便找到匹配 JavaScript 所傳數據的 name 3. 找到包含正確 title 的 link,并設置為 "$response" 變量。如果找到多于一個匹配,所有的匹配都會添加到變量 4. 如果沒有找到匹配,則把 $response 變量設置為 "no suggestion" 5. $result 是送往 "livesearch" 占位符的輸出
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看