利用PHP+JavaScript打造AJAX搜尋窗

來源:互聯網
上載者:User

一、 引言

Web世界中一項廣為使用的功能就是搜尋。隨著Web技術的日益發展,為了更好地滿足客戶的需求,常規搜尋引擎開始對更多的非常規方式"敞開了大門"。在這方面,Yahoo!率先提供出其Y!Q服務。這個新的服務能夠使你搜尋任何web頁面,前提是該頁面的作者必須包括在他們的web頁面中。是服務技術實現了把相關的搜尋結果呈現到讀者眼前,從而向讀者展示更多的資訊而不必離開他們的當前頁面。

Yahoo!的Y!Q服務的確是一個偉大的想法,但是它的出現也受到了一些批評。原因何在?首先,它要求用戶端必須使用Yahoo!的JavaScript並且你必須添加一個<form/>元素,以便滿足Yahoo!的搜尋要求。對於許多網站作者來說,提供該服務需求付出太多的努力。並且,在所有這些條件滿足之後,搜尋結果將以Yahoo!風格展現,從而破壞了使用者網站的外觀感覺。

幸運的是,Yahoo!並非唯一的提供"從你的網站提供搜尋結果"服務的搜尋引擎。MSN Search也提供一種類似服務,除了它能夠使web開發人員控制外觀感覺以外。這種能力來自於MSN Search提供它的搜尋結果的RSS版本,從而使得訂閱一個特定的搜尋或使用Ajax方法把該結果添加到你的頁面成為可能。

儘管Google已經率先實現了這種新的"從你的網站進行搜尋"技術;但是,在本文成文之時,與Google相關的Google BlogSearch Beta也已經能夠以RSS或者Atom格式提供返回的結果。

二、 伺服器端組件

使用MSN Search執行搜尋時,你會看到一個桔黃色的XML映像出現在結果頁面的底部。點擊這個映像將會把你帶到一個新的頁面,並提供給你訂閱該搜尋的URL。

這樣以來,你就可以編寫伺服器端代碼以檢索遠程饋送。對於本文中的搜尋窗,你將使用PHP檢索搜尋饋送。來自於伺服器應用程式請求資訊的URL看起來如下所示:

websearch.php?search=[SEARCHTERM]

查詢字串只有一個變數:"search";因此,應用程式應該尋找此查詢項。在伺服器端,你需要建立一個頁面來"拉動"這個資料:

<?php
header("Content-Type: text/xml");
header("Cache-Control: no-cache");if ( isset($_GET["search"]) )
{
 $searchTerm = urlencode( stripslashes($_GET["search"]) );
 $url = "http://search.msn.com/results.aspx?q=$searchTerm&format=rss";
 $xml = file_get_contents($url);
 echo $xml;
}
?>

前兩行設定要求的頭部以便瀏覽器能夠正確處理資料(XML形式,並且沒有對結果予以緩衝)。下一行代碼使用isset()函數來決定是否搜尋鍵存在於查詢字串中。

為了把一個合適的請求發送到遠程主機,搜尋術語應該通過許多函數的"過濾"。首先,它被傳遞給stripslashes()函數。如果在PHP配置中啟動了"magic quotes"(預設情況下是支援的),那麼,到達PHP引擎的任何引號都會被使用一個斜杠(如,\"search query\")自動地脫掉。該stripslashes()函數負責刪除這些符號,僅留下"search query"。在刪除斜杠後,轉到urlencode()函數,由這個函數負責編碼字元以用於查詢字串。空格、引號、"&"等符號都被編碼。

注意 如果搜尋術語不能通過這些函數的"過濾",那麼,MSN伺服器將返回一個代碼400-"Bad Request"。

當為轉換搜尋術語準備好後,它被包括到URL中並儲存於$url變數中。最後,file_get_contents()函數負責開啟遠程檔案,讀取其內容並以一個字串形式把它返回到$xml變數中,然後使用echo命令把它列印到頁面中。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.