0
点赞
收藏
分享

微信扫一扫

Day18JavaWeb【旅游项目】 搜索与分页的前台代码***


搜索与分页的前台代码

Day18JavaWeb【旅游项目】 搜索与分页的前台代码***_html

header.jsp 编写搜索框架事件

<script src="js/jquery-1.11.0.min.js" type="text/javascript"></script>
<script type="text/javascript">// 定义一个函数将搜索输入框的值进行获取
function searchRequest() {
//获取输入框的值
var keyword = $("#searchInput").val()
//判断 如果不为空,就发给显示页面
if (keyword != null && keyword.length > 0) {
//将keyword传给搜索结果页面
window.location = 'http://localhost:8080/lvyou_war_exploded/search_result.jsp?keyword='+keyword
}else{
//为空,提示用户,搜索词不能为空
alert('搜索词不能为空')
}

}</script>

search_result.jsp 编写

获取搜索关键字

  • (1)在header.jsp页面通过jq获取搜索框的搜索词,然后通过​​url?k=v​​​如​​url?keyword=长沙​​传给search_result.jsp页面
  • (2)在sarch_result.jsp页面通过​​location.search​​要获取地址上的参数keyword的值
  • (3)location.search 获取请求地址的参数,如​​?keywrod=长沙​​​​ http://localhost:8080/lvyou_war_exploded/sarch_result.jsp​​​​?keywrod=长沙​
  • (4)调用ajax发送请求,接收返回的json数据
  • (5)一个在线json工具网站:http://www.bejson.com/
  • (6)前端字符串使用单引号,避免产生更多反斜杠
    拼接也使用单引用​​​'+num+'​

//页面加载完成
$(function () {
//http://localhost:8080/lvyou_war_exploded/search_result.jsp?keyword=长沙
//location表示整个地址 location.search指 ?keyword=长沙
//另外,浏览器会对地址栏的中文进行url编码 ?keyword=%E9%95%BF%E6%B2%99
// split执行之后返回[?keyword,%E9%95%BF%E6%B2%99]
var array = location.search.split('=')
//长沙 -》 %E9%95%BF%E6%B2%99
var keyword = array[1]
//解码
keyword = decodeURI(keyword)
//加载数据
load(keyword,1,20)
})

  • location.search 获取header.jsp发送过来的参数
  • url编码与解码
    keyword=window.decodeURI(keyword)
    decodeURI(keyword)将​​​%E9%95%BF%E6%B2%99​​​ 解码成​​长沙​

发送请求获取json

function load( keyword, currentPage, pageSize) {
//http://localhost:8080/lvyou_war_exploded/routeServlet?keyword=%E9%95%BF%E6%B2%99¤tPage=1&pageSize=20
$.get('routeServlet', {keyword: keyword, currentPage: currentPage, pageSize: pageSize},
function (data) {
if (data.code == 200) {
var pb = data.data;
//显示列表数据
showList(pb)
//显示分页工具条数据
showTool(pb, keyword, currentPage, pageSize)
}
}, "json");
}

显示旅游路线的集合

function showList(pb) {
//在哪里显示
//$("#route_list")
var lis = ''
for (var i = 0; i < pb.list.length; i++) {
var route = pb.list[i]
//显示成什么样 '+变量名+'
var li = ' <li>\n' +
' <div class="img" ><img style="width: 299px;height: 169px" src="' + route.rimage + '" alt=""></div>\n' +
' <div class="text1">\n' +
' <p>' + route.rname + '</p>\n' +
' <br/>\n' +
' <p>' + route.routeIntroduce + '</p>\n' +
' </div>\n' +
' <div class="price">\n' +
' <p class="price_num">\n' +
' <span>¥</span>\n' +
' <span>' + route.price + '</span>\n' +
' <span>起</span>\n' +
' </p>\n' +
' <p><a href="route_detail.html">查看详情</a></p>\n' +
' </div>\n' +
' </li>'
//拼接
lis += li
}
$("#route_list").html(lis)
}

  • 使用jq对集合进行循环
  • 使用html()对ul标签体内容进行修改
  • 字符串使用单引号
  • 字 符串拼接变量​​'+变量名+'​

分页工具栏的显示与点击事件

  • (1)为什么要使用​​onClick="javascript:函数名()"​​ 如果鼠标左键点击这句所在的标签 , 将触发函数名()
  • (2)为什么要使用​​href=”javascript:void(0);”​​​​href=”javascript:void(0);”​​这个的含义是,让超链接去执行一个js函数,而不是去跳转到一个地址,而void(0)表示一个空的方法,也就是不执行js函数。
  • (3)img宽度调整
    ​​​<div class="img"><img src="'+route.rimage+'" style="width: 299px"></div>​
  • (4)当前页按钮高亮​​class="curPage"​
  • (5)下一页,上一页按钮宽度​​class="threeword"​
  • (6)引号转义 “ 或者 ’ 都需要在前面添加一个
    οnclick="javascript:load(梅州,1,2) //抛出异常
    οnclick="javascript:load(‘梅州’,1,2) //非变量
    οnclick="javascript:load(’’+keyword+’’,1,2) //变量情况

function showTool(pb, keyword, currentPage, pageSize) {
//只需要将pageBean里面的3个整数
$("#totalPage").html(pb.totalPage)
$("#totalCount").html(pb.totalCount)

var lis = ''
//拼接第一,二按钮
lis += '<li><a href="javascript:load(\'' + keyword + '\',1,' + pageSize + ')">首页</a></li>'

var min = currentPage - 1;
if (min < 1) {
min = 1
}

lis += '<li class="threeword"><a href="javascript:load(\'' + keyword + '\',' + min + ',' + pageSize + ')">上一页</a></li>'

for (var i = 1; i <= pb.totalPage; i++) {
if (i == pb.currentPage) { //高亮
lis += ' <li class="curPage"><a href="javascript:load(\'' + keyword + '\',' + i + ',' + pageSize + ')">' + i + '</a></li>'
} else {
lis += ' <li><a href="javascript:load(\'' + keyword + '\',' + i + ',' + pageSize + ')">' + i + '</a></li>'
}

}
//拼接倒数一,二按钮
var max = currentPage + 1;
if (max > pb.totalPage) {
max = pb.totalPage
}

lis += ' <li class="threeword"><a href="javascript:load(\'' + keyword + '\',' + max + ',' + pageSize + ')">下一页</a></li>'
lis += '<li class="threeword"><a href="javascript:load(\'' + keyword + '\',' + pb.totalPage + ',' + pageSize + ')">末页</a></li>'

//显示在pageNum
$("#pageNum").html(lis)
}
</script>

工具条的优化1

  • (1)当前页号是1,点击上一页,会越界
  • (2)当前页号是totalPage,点击下一页,会越界
  • Day18JavaWeb【旅游项目】 搜索与分页的前台代码***_js_02

//拼接倒数一,二按钮
var max = currentPage + 1;
if (max > pb.totalPage) {
max = pb.totalPage
}

lis += ' <li class="threeword"><a href="javascript:load(\'' + keyword + '\',' + max + ',' + pageSize + ')">下一页</a></li>'

Day18JavaWeb【旅游项目】 搜索与分页的前台代码***_js_03

var min = currentPage - 1;
if (min < 1) {
min = 1
}

lis += '<li class="threeword"><a href="javascript:load(\'' + keyword + '\',' + min + ',' + pageSize + ')">上一页</a></li>'

工具条的优化2

  • (1)分析百度分页工具栏
  • (2)有什么特点?
    》1:页数小于10个,比如5个,就展示5个
    》2:页数不小于10个,固定显示10个页号
  • (3)如何根当前页号计算开始与结束页号
    》1:默认当页号高亮,前面是5个页号,后面是4个页号
    》2:范围:前面页号最小是1,后面页号最大是totalPage
    》3:固定10个页号,知道开始页号,可以通过+9得到结束,返之得到开始
  • (3)调整页面位置
    $("#pageNum").html(liList)
    ​​​window.scrollTo(0,0);​

var start = 0
var end = 0
//判断当前的页数是否有10页
if (pb.totalPage < 10) {
start = 1;
end = pb.totalPage
}else{
//当前有10页
//如果当前页号是8 ,开始是3,结束是12
start = currentPage - 5;
end = currentPage + 4
//越界判断 start有可能出现小于,end有可能出现大于pb.totalPage
if(start < 1){
start = 1; //1
end = start + 9; //10
}

if(end > pb.totalPage){
end = pb.totalPage //26
start = end - 9 //17
}
}

for (var i = start; i <= end; i++) {
//...
}


举报

相关推荐

0 条评论