站內搜索舉例
![使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品](http://p2.ttnews.xyz/loading.gif)
上圖是京東,比如在京東輸入編程,會出來和編程相關的一些東西,那麼這個是對ajax的一個非常典型的應用
首先,我們要做出這樣一個搜索框,要求開始的時候不顯示,一旦輸入內容就開始顯示相關的,而且它顯示之後別的地方沒有佈局改變,說明它的位置是絕對的
![使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品](http://p2.ttnews.xyz/loading.gif)
input是搜索框的代碼,下面的div是用來顯示我們搜索時的一些相關內容。
其中display:none表示開始不顯示只有當搜索的時候,才設置成顯示,position:absolute表示位置是絕對的,當他設置位置是絕對的時候,要給其父div設置成position:relative,位置是相對的,然後z-index如果不設置的話他的搜索相關的內容的div將會在被頁面覆蓋,就是這種情況
這個就是搜索框的一些基本情況,下面分析一下這個項目的邏輯情況
邏輯分析
這個搜索框在head.jsp中,只要我們輸入內容,他就會自動調用onkeyup事件傳遞過去當前對象,這個事件是一個post訪問,訪問SearchWordServlet並傳遞過去當前的我們搜索框的內容,一直傳到dao層,dao層用輸入的內容進行pname的模糊查詢,只查詢pname這一列,封裝到一個list集合,然後返回給SearchWordServlet,他把這個list使用json工具類轉變成json寫到客戶端,客戶端獲取到當前根據輸入查詢到的模糊查詢json數組,遍歷它,並把每一個都添加到
中間,然後所有的div連在一起,將輸入顯示div的html設置成這個組合在一起的所有div就ok了。具體代碼分析
搜索框代碼
這個代碼核心就是鍵盤按下之後執行searchWord方法
該方法獲取搜索框中的內容word,並且訪問SearchWordServlet傳遞給它word參數,就是當前的搜索框信息
通過ProductListService調用findAllProductByWord(word),然後調用ProductListDao的findAllProductByWord(word)
這個查詢並不是查詢查詢所有的商品信息,而是隻查詢一列,商品信息列,所以可以使用ColumnListHandler,返回List
上圖標紅的地方就是使用json處理工具。能夠處理將一個集合或者數組轉成json串,上面工具的使用都是固定的
json的轉換插件是通過java的一些工具,直接將java對象或集合轉換成json字符串。
常用的json轉換工具有如下幾種:
1)jsonlib
2)Gson:google
3)fastjson:阿里巴巴
jsonlib需要導入的包為
gson需要導入的包
數據寫到客戶端之後,$.post的響應函數會運行
這個函數中參數data就是服務器端返回的數據,這個是一個json類型的集合,如果它不是空的(就是查到了)我們可以遍歷它,把他的存儲的每項pname,放到
當然為了一些其它的效果我們填了一些樣式和事件,比如onmouseover,鼠標移入的時候高亮顯示,onmouseout鼠標移除的時候不亮顯示,cursor:pointer是鼠標放到這個div上時,鼠標編程小手,onclick是鼠標點擊這個div的時候,將其點擊的這個div的內容放到搜索框中,並且不再顯示
我們要獲取搜索框對象$("#search").val的內容設置為 自此所有功能和操作就全部完成了
閱讀更多 幻風的編程日記 的文章