ajax实例及实现文本框异步搜素

search.jsp(WebContent/jsp/search.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Search</title>
  <script type="text/javascript">
    
    /***单机文本框时检查文本框的值***/
    function changeValue(){
        var tab = document.getElementById("tabId");
        var inputStr = document.getElementById("inputStr");
        var inputValue = inputStr.value;
        if(inputStr.value==null || inputStr.value==""){
            tab.style.display='none';
        }else{
            ajax(inputValue);
            tab.style.display='table';
        }
    }
    /***当按下或释放键时检查文本框的值***/
    function checkField(obj){
        var tab = document.getElementById("tabId");
        var inputStr = document.getElementById("inputStr");
        
        var inputValue = inputStr.value;
        
        if(obj==null || obj==""){
            tab.style.display='none';
        }else{
            tab.style.display='table';
            ajax(inputValue);
        }
    }
    /***单机td时给文本框赋值***/
    function display(obj){
        var tab = document.getElementById("tabId");
        document.getElementById("inputStr").value=obj.innerHTML;
        tab.style.display='none';
    }
    /***onmouseover事件给文本框赋值***/
    function setInputValue(obj){
        var tab = document.getElementById("tabId");
        document.getElementById("inputStr").value=obj.innerHTML;
    }
    
    
    function ajax(param) {
        //先声明一个异步请求对象
        var xmlHttpReg = null;
        if (window.ActiveXObject) {//如果是IE
            xmlHttpReg = new ActiveXObject("Microsoft.XMLHTTP");
        } else if (window.XMLHttpRequest) {
            xmlHttpReg = new XMLHttpRequest(); //实例化一个xmlHttpReg
        }
        //如果实例化成功,就调用open()方法,就开始准备向服务器发送请求
        if (xmlHttpReg != null) {
            xmlHttpReg.open("post", "/Test/SearchServlet?param="+param, true);
            xmlHttpReg.send(null);
            xmlHttpReg.onreadystatechange = doResult; //设置回调函数
        }
        //回调函数
        //一旦readyState的值改变,将会调用这个函数,readyState=4表示完成相应

        //设定函数doResult()
        function doResult() {
            if (xmlHttpReg.readyState == 4) {//4代表执行完成
                if (xmlHttpReg.status == 200) {//200代表执行成功
                    var resultValue = xmlHttpReg.responseText;
                    if(resultValue!=null){
                        document.getElementById("tabId").innerHTML=resultValue;
                    }
                }
            }
        }
    }
  </script>
</head>
<body>
    <input type="text" name="inputStr" id="inputStr" onclick="changeValue()" onkeydown="checkField(this.value)" onkeyup="checkField(this.value)">
    <table style="border:1px solid;display:none;cellpadding:0" width="153px" id="tabId">
        <!-- 
        <tr height="25px"><td onclick="display(this)" onmouseover="setInputValue(this)">aaaaa</td></tr>
        <tr height="25px"><td onclick="display(this)" onmouseover="setInputValue(this)">bbbbb</td></tr>
        <tr height="25px"><td onclick="display(this)" onmouseover="setInputValue(this)">ccccc</td></tr>
        <tr height="25px"><td onclick="display(this)" onmouseover="setInputValue(this)">ddddd</td></tr>
         -->
    </table>
</body>
</html>

SearchServlet(com.test.srevlet.SearchServlet)

package com.test.srevlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/SearchServlet")
public class SearchServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public SearchServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String param = request.getParameter("param");
        StringBuffer returnStr = new StringBuffer();
        String[] strs = null;
        if(param.endsWith("aa")){
            strs=new String[]{"a","aa","aaa","aaaa"};
            for (int i = 0; i < strs.length; i++) {
                returnStr.append("<tr height=\"25px\"><td onclick=\"display(this)\" onmouseover=\"setInputValue(this)\">");
                returnStr.append(strs[i]);
                returnStr.append("</td></tr>");
            }
        }else if(param.endsWith("aas")){
            strs=new String[]{"sas","saas","saaas","saaaas"};
            for (int i = 0; i < strs.length; i++) {
                returnStr.append("<tr height=\"25px\"><td onclick=\"display(this)\" onmouseover=\"setInputValue(this)\">");
                returnStr.append(strs[i]);
                returnStr.append("</td></tr>");
            }
        }else if(param.endsWith("aass")){
            strs=new String[]{"f","faa","faaa","faaaa"};
            for (int i = 0; i < strs.length; i++) {
                returnStr.append("<tr height=\"25px\"><td onclick=\"display(this)\" onmouseover=\"setInputValue(this)\">");
                returnStr.append(strs[i]);
                returnStr.append("</td></tr>");
            }
        }else{
            returnStr.append("<tr height=\"25px\"><td onclick=\"display(this)\" onmouseover=\"setInputValue(this)\"></td></tr>");
        }
        
        
        System.out.println(returnStr.toString());
        response.getWriter().write(returnStr.toString());
    }

}

 

posted @ 2015-02-06 16:43  High阔天空  阅读(972)  评论(0编辑  收藏  举报