AJAX实现导航式多条件搜索

   导航式搜索在实际网站开发中有很多应用,其实现原理也不复杂,关键是如何记忆所选的条件。常见的方式有存入session、存入数组等。本文采用的是AJAX+数组的方式,在不跳转,不刷新整个页面的条件下动态返回查询结果。

创新互联建站主营鹤岗网站建设的网络公司,主营网站建设方案,app软件定制开发,鹤岗h5重庆小程序开发搭建,鹤岗网站营销推广欢迎鹤岗等地区企业咨询

效果图如下:

AJAX实现导航式多条件搜索

1.search.jsp

   通过将所选的查询条件存入数组,通过AJAX传到后台,这样在后台利用所得到的查询条件,就可以到数据库进行查询了。代码如下:

<%@ page language="java"  import="java.util.List;" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>





Insert title here


   var xmlHttp;
   function createXmlHttpRequest() {
       if (window.ActiveXObject) {
           xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       } else if (window.XMLHttpRequest) {
           xmlHttp = new XMLHttpRequest();
           }
   }
//回调
   function handleStateChange() {
       if (xmlHttp.readyState == 4) {
           if (xmlHttp.status == 200) {
               parseResults();
               }
           }
   }
//将后台返回的数据显示在层content中
   function parseResults() {
        document.getElementById("content").innerHTML=xmlHttp.responseText;//将返回的请
求文本Text写入指定的DIV中
   }


   var req;
   var searchChar = new Array();
   for(var i=0;i<3;i++){
       searchChar[i]=0;
   }
   function bb(num,con){
        switch(num){
             case 0: searchChar[0]=con;
             break;
             case 1: searchChar[1]=con;
             break;
             case 2: searchChar[2]=con;
             break;
        }
    for(var i=0;i<13;i++){   //解决选中字段显示颜色的问题
        var region1 = "0" + i;
        document.getElementById(region1).style.color="black";
    }
    for(var i=0;i<5;i++){
        var type1 = "1" + i;
        document.getElementById(type1).style.color="black";
    }
    for(var i=0;i<5;i++){
        var price1 = "2" + i;
        document.getElementById(price1).style.color="black";
    }
    var region="0"+searchChar[0];
    document.getElementById(region).style.color="red";
    var type="1"+searchChar[1];
    document.getElementById(type).style.color="red";
    var price="2"+searchChar[2];
    document.getElementById(price).style.color="red";

   var url = "BuildingServlet";
   createXmlHttpRequest();
   xmlHttp.open("POST", url, true);
   xmlHttp.onreadystatechange = handleStateChange;//回调
   xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;text/xml;charset=utf-8"); //text/xml;charset=utf-8:可以解决汉字封装json问题
       xmlHttp.send("searchChar="+searchChar);
   }


   var req;
   var searchChar = new Array();
   for(var i=0;i<3;i++){
       searchChar[i]=0;
   }
   function bb(num,con){
        switch(num){
             case 0: searchChar[0]=con;
             break;
             case 1: searchChar[1]=con;
             break;
             case 2: searchChar[2]=con;
             break;
        }
    for(var i=0;i<13;i++){   //解决选中字段显示颜色的问题
        var region1 = "0" + i;
        document.getElementById(region1).style.color="black";
    }
    for(var i=0;i<5;i++){
        var type1 = "1" + i;
        document.getElementById(type1).style.color="black";
    }
    for(var i=0;i<5;i++){
        var price1 = "2" + i;
        document.getElementById(price1).style.color="black";
    }
    var region="0"+searchChar[0];
    document.getElementById(region).style.color="red";
    var type="1"+searchChar[1];
    document.getElementById(type).style.color="red";
    var price="2"+searchChar[2];
    document.getElementById(price).style.color="red";

   var url = "BuildingServlet";
   createXmlHttpRequest();
   xmlHttp.open("POST", url, true);
   xmlHttp.onreadystatechange = handleStateChange;//回调
   xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;text/xml;charset=utf-8"); //text/xml;charset=utf-8:可以解决汉字封装json问题
       xmlHttp.send("searchChar="+searchChar);
   }




   

区域:        全部        市南        市北        李沧        崂山        城阳        黄岛        即墨市        胶州市        胶南市        平度市        莱西市        其他

   

户型:        全部        住宅        商用        办公        其他

   

价格:        全部        6000以下        6000--8000        8000--12000        12000以上

                      楼盘名            区域            户型            价格             
   document.getElementById("00").style.color="red";    document.getElementById("10").style.color="red";    document.getElementById("20").style.color="red";

2.BuildingServlet.java

   得到jsp页面传来的数组,并解析得到对应的条件,调用相关的方法得到查询结果,并将结果返回给前台。

packagecom.realty.servlet;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.swing.JOptionPane;
importcom.realty.base.model.*;
importcom.realty.base.action.BuildingAction;
/**
* Servlet implementation class BuildingServlet
*/
@WebServlet("/BuildingServlet")
publicclassBuildingServlet extendsHttpServlet {
privatestaticfinallongserialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
publicBuildingServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {
// TODO Auto-generated method stub
doPost(request,response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("text/html;charset=UTF-8");//解决乱码问题,没有这句,回调函数的内容可能乱码
String searchcharg = request.getParameterValues("searchChar")[0].trim();//得到jsp页面数组的内容,但是以String形式。
String[] searchchars = searchcharg.split(",");
int[] searchchar = { 0, 0, 0, 0}; //切分String,将各个值存入新数组中。
//String to int
for(inti = 0; i < searchchars.length; i++) {
searchchar[i] = Integer.parseInt(searchchars[i]);
}
BuildingAction buildingaction=newBuildingAction();//根据jsp页面传来的每个条件的值,即可编写相应类查询出对应的结果。
List result=buildingaction.buildingSearch(searchchar[0], searchchar[1], searchchar[2]);
if(result.size()>0){
out.println(""); //将结果返回给jsp页面
out.println(""
+ "楼盘名"
+ "区域"
+ "户型"
+ "价格");
out.println("");
for(inti=0;i"
+ ""+result.get(i).getBuildingName()+" "
+ ""+result.get(i).getRegionId()+""
+ ""+result.get(i).getUsageId()+""
+ ""+result.get(i).getAveragePrice()+""
+"");
}
out.println("");
out.close();
}
else{
out.println(""
+""
+"  没有相应信息 "
+""
+"");
out.close();
}
}
}

文章名称:AJAX实现导航式多条件搜索
标题URL:http://hbruida.cn/article/pjsjec.html

其他资讯