note

xiaoxiao2021-02-28  111

功能:用户输入收索的关键词,然后回车触发查询

------------------------------------------------------------------------------

发送ajax请求

发送事件:输入关键词后,点击回车(按键监听事件)

 

$("#search_note").keydown(function(event){ var code=event.keyCode; if(code==13){ 请求发送 } })

请求参数:输入的关键词

请求地址:/share/search.do

服务器处理

Controller

Service

Dao

cn_share(select操作 模糊查询)

select * from cn_share where cn_share_title like =#{keyword} limit #{begin} , 3;

ajax回调处理

success:

1.影藏笔记列表的DIV(id='pc_part_2')调用hide方法

2.显示收索笔记结果列表(id='pc_part_6')

3.将解析后的结果添加到列表里面

error:提示收索失败

------------------------------------------------------------------------------

Share实体类:

public class Share implements Serializable{ private String cn_share_id; private String cn_share_title; private String cn_share_body; private String cn_note_id;

------------------------------------------------------------------------------

Dao接口:

 

//搜索笔记(已经分享过的笔记) public List<Share> findByTitle(Map params);

注意:单击回车键之后进行模糊查询,且显示第一页,具有分页功能,所以需要传递两个参数(搜索的关键词语和页码--此处页码设置为1)

------------------------------------------------------------------------------

映射文件:

 

<!-- 搜索笔记(已经分享过的笔记) --> <!-- 此种方法也可以,案例中是在Service层进行模糊匹配 select * from cn_share where cn_share_title like concat('%',#{title},'%') --> <select id="findByTitle" parameterType="map" resultType="cn.tedu.cloud_note.entity.Share"> select * from cn_share where cn_share_title like #{keyword} limit #{begin},3 </select>

------------------------------------------------------------------------------

业务层接口:

//搜索笔记 public NoteResult<List<Share>> searchNote(String title,int page);

------------------------------------------------------------------------------

业务层实现类:

//搜索笔记 public NoteResult<List<Share>> searchNote(String title,int page) { NoteResult<List<Share>> result = new NoteResult<List<Share>>(); //模糊查询的匹配,也可以在映射文件进行%的匹配 String keyword = "%"; if(keyword != null && !keyword.equals("")){ keyword = "%" + title + "%";//若title为空字符串则查询全部 } int begin = (page - 1)*3;//计算抓取记录的起点 Map<String,Object> params = new HashMap<String,Object>(); params.put("keyword", keyword); params.put("begin", begin); List<Share> list = shareDao.findByTitle(params); if(list == null || list.size() == 0){//没有查到相关Share实例 result.setStatus(1); result.setMsg("没有查到相关笔记"); return result; } result.setStatus(0); result.setMsg("搜索笔记成功"); result.setData(list); return result; }

注意:在业务层中对传入的搜索关键字进行匹配(添加%),然后将匹配后的参数传入Dao,并调用,若接收到的参数为空字符串,则相当于查询所有的分享笔记

------------------------------------------------------------------------------

控制层Controller:

 

package cn.tedu.cloud_note.controller; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.tedu.cloud_note.entity.Share; import cn.tedu.cloud_note.service.ShareService; import cn.tedu.cloud_note.util.NoteResult; @Controller @RequestMapping("/share") public class SearchNoteController { @Resource(name="shareService") private ShareService service; //分享笔记 @RequestMapping("/search.do") @ResponseBody public NoteResult<List<Share>> execute(String title,int page){ NoteResult<List<Share>> result = service.searchNote(title); return result; } }

------------------------------------------------------------------------------

HTML部分代码:

<script type="text/javascript"> var page = 1; $(function(){...

 在function外边定义全局变量 var page = 1;分页时候使用

 

//绑定搜索笔记,按回车,搜索结果分页显示(已经分享过的笔记,默显示第一页) $("#search_note").keydown(searchShareNote); //点击更多按钮,加载下一页(更多......) $("#more_note").on("click",moreSearchShare);

------------------------------------------------------------------------------

调用的JS代码:

 

//点击更多按钮,加载查询结果的下一页......(分页功能) function moreSearchShare(){ //获取请求参数 var title = $("#search_note").val().trim(); page = page + 1;//修改全局变量 //alert(title+":"+page); //发送ajax请求,加载列表 loadPageShare(title,page); } //按回车,加载搜索结果的第一页(已经分享过的笔记,默显示第一页) function searchShareNote(event){ var code = event.keyCode; if(code == 13){ //清空已有的Share列表 $("#share_ul li").empty(); //获取请求参数 var title = $("#search_note").val().trim(); //alert(title); //发送ajax请求 page = 1;//修改全局变量 不能直接传参数1 每一次搜索page都要重置为1 loadPageShare(title,page); } } //发送ajax请求 function loadPageShare(title,page){ $.ajax({ url:path + "/share/search.do", type:"post", data:{"title":title,"page":page}, dataType:"json", success:function(result){ if(result.status == 0){ //获取数据 var list = result.data;//Share的集合 //将显示笔记的DIV隐藏,更换为搜索笔记的DIV $("#pc_part_2").hide(); $("#pc_part_6").show(); //将数据写入搜索笔记的li for(var i=0;i<list.length;i++){ //记录ID var shareId =list[i].cn_note_id; //记录标题 var shareTitle = list[i].cn_share_title; //创建li对象 var $li = $( '<li class="online">'+ '<a>'+ '<i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>'+ shareTitle + '</a>'+ '</li>'); //绑定shareId $li.data("shareId",shareId); //将li添加到ul中 $("#share_ul").append($li); } } }, error:function(){alert("搜索笔记失败");} }); }

------------------------------------------------------------------------------

测试结果:

注意:在单击笔记本显示笔记列表时候要将其DIV显示,隐藏搜索share笔记的DIV,在单击更多......的时候,也是进行分页,此时可以调用相同的ajax

转载请注明原文地址: https://www.6miu.com/read-24940.html

最新回复(0)