使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

站內搜索舉例

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

上圖是京東,比如在京東輸入編程,會出來和編程相關的一些東西,那麼這個是對ajax的一個非常典型的應用

首先,我們要做出這樣一個搜索框,要求開始的時候不顯示,一旦輸入內容就開始顯示相關的,而且它顯示之後別的地方沒有佈局改變,說明它的位置是絕對的

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

input是搜索框的代碼,下面的div是用來顯示我們搜索時的一些相關內容。

其中display:none表示開始不顯示只有當搜索的時候,才設置成顯示,position:absolute表示位置是絕對的,當他設置位置是絕對的時候,要給其父div設置成position:relative,位置是相對的,然後z-index如果不設置的話他的搜索相關的內容的div將會在被頁面覆蓋,就是這種情況

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

這個就是搜索框的一些基本情況,下面分析一下這個項目的邏輯情況

邏輯分析

這個搜索框在head.jsp中,只要我們輸入內容,他就會自動調用onkeyup事件傳遞過去當前對象,這個事件是一個post訪問,訪問SearchWordServlet並傳遞過去當前的我們搜索框的內容,一直傳到dao層,dao層用輸入的內容進行pname的模糊查詢,只查詢pname這一列,封裝到一個list集合,然後返回給SearchWordServlet,他把這個list使用json工具類轉變成json寫到客戶端,客戶端獲取到當前根據輸入查詢到的模糊查詢json數組,遍歷它,並把每一個都添加到

中間,然後所有的div連在一起,將輸入顯示div的html設置成這個組合在一起的所有div就ok了。

具體代碼分析

搜索框代碼

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

這個代碼核心就是鍵盤按下之後執行searchWord方法

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

該方法獲取搜索框中的內容word,並且訪問SearchWordServlet傳遞給它word參數,就是當前的搜索框信息

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

通過ProductListService調用findAllProductByWord(word),然後調用ProductListDao的findAllProductByWord(word)

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

這個查詢並不是查詢查詢所有的商品信息,而是隻查詢一列,商品信息列,所以可以使用ColumnListHandler,返回List,這個查詢應該是模糊查詢,然後顯示6條即可,太多就不太好,查找的這個List存儲的是查詢到的商品名稱一級一級返回給SearchWordServlet,在SearchWordServlet使用json工具將其轉成json串,返回給客戶端

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

上圖標紅的地方就是使用json處理工具。能夠處理將一個集合或者數組轉成json串,上面工具的使用都是固定的

json的轉換插件是通過java的一些工具,直接將java對象或集合轉換成json字符串。

常用的json轉換工具有如下幾種:

1)jsonlib

2)Gson:google

3)fastjson:阿里巴巴

jsonlib需要導入的包為

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

gson需要導入的包

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

數據寫到客戶端之後,$.post的響應函數會運行

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

這個函數中參數data就是服務器端返回的數據,這個是一個json類型的集合,如果它不是空的(就是查到了)我們可以遍歷它,把他的存儲的每項pname,放到

data[i]
中間,然後遍歷下來組成一個由很多
組成的content,然後將顯示查詢結果的div內部設置成這個content($("#showDiv").html(content)),然後設置成顯示($("#showDiv").css(“display”,“block”))

當然為了一些其它的效果我們填了一些樣式和事件,比如onmouseover,鼠標移入的時候高亮顯示,onmouseout鼠標移除的時候不亮顯示,cursor:pointer是鼠標放到這個div上時,鼠標編程小手,onclick是鼠標點擊這個div的時候,將其點擊的這個div的內容放到搜索框中,並且不再顯示

使用異步處理技術ajax完成電子商城站內搜索實例,搜索想要的商品

我們要獲取搜索框對象$("#search").val的內容設置為

中間的pname
中間的pname,這個pname不是value而是html,所以要獲取到$(obj).html()

自此所有功能和操作就全部完成了


分享到:


相關文章: