天天看點

用ajax + webwork 實作google suggest 效果

浠g??濡?涓?:

autoComplete.html

用ajax + webwork 實作google suggest 效果

< html >

用ajax + webwork 實作google suggest 效果

?? < head >

用ajax + webwork 實作google suggest 效果

?????? < title > Ajax?Auto?Complete </ title >

用ajax + webwork 實作google suggest 效果

?????? < meta? http-equiv ="Content-Type" ?content ="text/html;?charset=gb2312" >

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

?????? < style? type ="text/class" > ...

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????.mouseOut{...}{

用ajax + webwork 實作google suggest 效果

??????????background:?#708090;

用ajax + webwork 實作google suggest 效果

??????????color:#FFFAFA;

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

???????.mouseOver{...}{

用ajax + webwork 實作google suggest 效果

??????????background:#FFFAFA;

用ajax + webwork 實作google suggest 效果

??????????color:#000000;

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果

??????? </ style >

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

?????? < script? type ="text/javascript" > ...

用ajax + webwork 實作google suggest 效果

???????????var?xmlHttp;

用ajax + webwork 實作google suggest 效果

???????????var?completeDiv;

用ajax + webwork 實作google suggest 效果

???????????var?inputField;

用ajax + webwork 實作google suggest 效果

???????????var?nameTable;

用ajax + webwork 實作google suggest 效果

???????????var?nameTableBody;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?createXMLHttpRequest()...{

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????if(window.ActiveXObject)...{

用ajax + webwork 實作google suggest 效果

??????????????????xmlHttp?=?new?ActiveXObject("Microsoft.XMLHTTP");

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????}else?if(window.XMLHttpRequest)...{

用ajax + webwork 實作google suggest 效果

??????????????????xmlHttp?=?new?XMLHttpRequest();

用ajax + webwork 實作google suggest 效果

??????????????}

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?initVars()...{

用ajax + webwork 實作google suggest 效果

??????????????inputField?=?document.getElementById("names");

用ajax + webwork 實作google suggest 效果

??????????????nameTable?=?document.getElementById("name_table");

用ajax + webwork 實作google suggest 效果

??????????????completeDiv?=?document.getElementById("popup");

用ajax + webwork 實作google suggest 效果

??????????????nameTableBody?=?document.getElementById("name_table_body");

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?findNames()...{

用ajax + webwork 實作google suggest 效果

??????????????initVars();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????if(inputField.value.length?>?0)...{

用ajax + webwork 實作google suggest 效果

??????????????????createXMLHttpRequest();

用ajax + webwork 實作google suggest 效果

??????????????????var?url?=?"AutoComplete.action?name="?+?escape(inputField.value);

用ajax + webwork 實作google suggest 效果

??????????????????xmlHttp.open("GET",url,true);

用ajax + webwork 實作google suggest 效果

??????????????????xmlHttp.onreadystatechange?=?callback;

用ajax + webwork 實作google suggest 效果

??????????????????xmlHttp.send(null);

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????}else...{

用ajax + webwork 實作google suggest 效果

??????????????????clearNames();

用ajax + webwork 實作google suggest 效果

??????????????}

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?callback()...{

用ajax + webwork 實作google suggest 效果

??????????????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????if(xmlHttp.readyState?==4?)...{

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????????if(xmlHttp.status?==?200)...{

用ajax + webwork 實作google suggest 效果

??????????????????????setNames(xmlHttp.responseXML.getElementsByTagName("name"));

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????????}else?if(xmlHttp.status?==?204?||?xmlHttp.status?==?1223)...{

用ajax + webwork 實作google suggest 效果

??????????????????????clearNames();

用ajax + webwork 實作google suggest 效果

??????????????????}

用ajax + webwork 實作google suggest 效果

??????????????}

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?setNames(the_names)...{

用ajax + webwork 實作google suggest 效果

??????????????clearNames();

用ajax + webwork 實作google suggest 效果

?????????????

用ajax + webwork 實作google suggest 效果

??????????????var?size?=?the_names.length;

用ajax + webwork 實作google suggest 效果

??????????????setOffsets();

用ajax + webwork 實作google suggest 效果

??????????????

用ajax + webwork 實作google suggest 效果

??????????????var?row,cell,txtNode;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????for(var?i=0;?i<size;?i++)...{

用ajax + webwork 實作google suggest 效果

??????????????????var?nextNode?=?the_names[i].firstChild.data;

用ajax + webwork 實作google suggest 效果

??????????????????row??=?document.createElement("tr");

用ajax + webwork 實作google suggest 效果

??????????????????cell?=?document.createElement("td");

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????????//cell.onmouseout?=?function(){this.className?=?'mouseOver';};

用ajax + webwork 實作google suggest 效果

??????????????????//cell.onmouseover?=?function(){this.className?=?'mouseOut';};

用ajax + webwork 實作google suggest 效果

??????????????????cell.setAttribute("bgcolor","#FFFAFA");

用ajax + webwork 實作google suggest 效果

??????????????????cell.setAttribute("border","0");

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????????cell.onclick?=?function()...{?populateName(this);};

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????????cell.onmouseover?=?function()...{?doOnMouseOver(this)}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????????cell.onmouseout?=?function()?...{?doOnMouseOut(this)}

用ajax + webwork 實作google suggest 效果

??????????????????txtNode?=?document.createTextNode(nextNode);

用ajax + webwork 實作google suggest 效果

??????????????????cell.appendChild(txtNode);

用ajax + webwork 實作google suggest 效果

??????????????????row.appendChild(cell);

用ajax + webwork 實作google suggest 效果

??????????????????nameTableBody.appendChild(row);

用ajax + webwork 實作google suggest 效果

??????????????}

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?setOffsets()...{

用ajax + webwork 實作google suggest 效果

??????????????var?end?=?inputField.offsetWidth;

用ajax + webwork 實作google suggest 效果

??????????????var?left?=?calculateOffsetLeft(inputField);

用ajax + webwork 實作google suggest 效果

??????????????var?top?=?calculateOffsetTop(inputField)?+?inputField.offsetHeight;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????completeDiv.style.border?=?"black?1px?solid";

用ajax + webwork 實作google suggest 效果

??????????????completeDiv.style.left?=?left?+?"px";

用ajax + webwork 實作google suggest 效果

??????????????completeDiv.style.top?=?top?+?"px";

用ajax + webwork 實作google suggest 效果

??????????????completeDiv.style.width?=?end?+?"px";

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?calculateOffsetLeft(field)...{

用ajax + webwork 實作google suggest 效果

??????????????return?calculateOffset(field,"offsetLeft");

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?calculateOffsetTop(field)...{

用ajax + webwork 實作google suggest 效果

??????????????return?calculateOffset(field,"offsetTop");

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?calculateOffset(field,attr)...{

用ajax + webwork 實作google suggest 效果

??????????????var?offset?=?0;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????while(field)...{

用ajax + webwork 實作google suggest 效果

??????????????????offset?+=?field[attr];

用ajax + webwork 實作google suggest 效果

??????????????????field?=?field.offsetParent;

用ajax + webwork 實作google suggest 效果

??????????????}

用ajax + webwork 實作google suggest 效果

??????????????return?offset;

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?populateName(cell)...{

用ajax + webwork 實作google suggest 效果

??????????????inputField.value?=?cell.firstChild.nodeValue;

用ajax + webwork 實作google suggest 效果

??????????????clearNames();

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果

??????????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?doOnMouseOver(cell)...{

用ajax + webwork 實作google suggest 效果

????????????????cell.style.background?=?"blue";

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果

??????????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?doOnMouseOut(cell)...{

用ajax + webwork 實作google suggest 效果

????????????????cell.style.background?=?"#FFFFFF";

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????function?clearNames()...{

用ajax + webwork 實作google suggest 效果

??????????????

用ajax + webwork 實作google suggest 效果

??????????????var?ind?=?nameTableBody.childNodes.length;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

??????????????for(var?i=?ind?-?1;?i>=0;?i--)...{

用ajax + webwork 實作google suggest 效果

??????????????????nameTableBody.removeChild(nameTableBody.childNodes[i]);

用ajax + webwork 實作google suggest 效果

??????????????}

用ajax + webwork 實作google suggest 效果

??????????????completeDiv.style.border?=?"none";

用ajax + webwork 實作google suggest 效果

??????????}

用ajax + webwork 實作google suggest 效果

?????? </ script >

用ajax + webwork 實作google suggest 效果

</ head >

用ajax + webwork 實作google suggest 效果

?? < body >

用ajax + webwork 實作google suggest 效果

?? < h1 > Ajax?Auto?Complete?Example </ h1 >

用ajax + webwork 實作google suggest 效果

??Names:? < input? type ="text" ?size ="20" ?id ="names" ?onkeyup ="findNames();" ?style ="height:20px;" >

用ajax + webwork 實作google suggest 效果

?? < div? style ="position:absolute;" ?id ="popup" >

用ajax + webwork 實作google suggest 效果

?????? < table? id ="name_table" ?bgcolor ="#FFFAFA" ?border ="0" ?cellspacing ="0" >

用ajax + webwork 實作google suggest 效果

???????? < tbody? id ="name_table_body" ></ tbody >

用ajax + webwork 實作google suggest 效果

?????? </ table >

用ajax + webwork 實作google suggest 效果

?? </ div >

用ajax + webwork 實作google suggest 效果

?? </ body >

用ajax + webwork 實作google suggest 效果

</ html >

AutoComplete.java

用ajax + webwork 實作google suggest 效果

package ?control;

用ajax + webwork 實作google suggest 效果

import ?java.io. * ;

用ajax + webwork 實作google suggest 效果

import ?java.util.ArrayList;

用ajax + webwork 實作google suggest 效果

import ?java.util.Iterator;

用ajax + webwork 實作google suggest 效果

import ?java.util.List;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

import ?javax.servlet.http.HttpServletResponse;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

import ?com.opensymphony.webwork.ServletActionContext;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

import ?core.BookActionSupport;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

public ? class ?AutoComplete? extends ?BookActionSupport ... {

用ajax + webwork 實作google suggest 效果

????private?List?names?=?new?ArrayList();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????public?String?execute()...{

用ajax + webwork 實作google suggest 效果

????????names.add("Abe");

用ajax + webwork 實作google suggest 效果

????????names.add("Abel");

用ajax + webwork 實作google suggest 效果

????????names.add("Abigail");

用ajax + webwork 實作google suggest 效果

????????names.add("Abner");

用ajax + webwork 實作google suggest 效果

????????names.add("Abraham");

用ajax + webwork 實作google suggest 效果

????????names.add("Marcy");

用ajax + webwork 實作google suggest 效果

????????names.add("Marge");

用ajax + webwork 實作google suggest 效果

????????names.add("marie");

用ajax + webwork 實作google suggest 效果

????????names.add("MarcyMarcyMarcyMarcyMarcy");

用ajax + webwork 實作google suggest 效果

????????

用ajax + webwork 實作google suggest 效果

????????String?prefix?=?getParameter("name");

用ajax + webwork 實作google suggest 效果

????????NameService?service?=?NameService.getInstance(names);

用ajax + webwork 實作google suggest 效果

????????List?matching?=?service.findNames(prefix);

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????try...{

用ajax + webwork 實作google suggest 效果

????????????HttpServletResponse?response?=?ServletActionContext.getResponse();

用ajax + webwork 實作google suggest 效果

????????????PrintWriter?out?=?response.getWriter();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????????if(matching.size()>0)...{

用ajax + webwork 實作google suggest 效果

?????????????????

用ajax + webwork 實作google suggest 效果

????????????????response.setContentType("text/xml");

用ajax + webwork 實作google suggest 效果

????????????????response.setHeader("Cache-Control","no-cache");

用ajax + webwork 實作google suggest 效果

????????????????out.println("<response>");

用ajax + webwork 實作google suggest 效果

????????????????Iterator?iter?=?matching.iterator();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????????????while(iter.hasNext())...{

用ajax + webwork 實作google suggest 效果

????????????????????String?name?=?(String)?iter.next();

用ajax + webwork 實作google suggest 效果

????????????????????out.println("<name>"?+?name?+?"</name>");

用ajax + webwork 實作google suggest 效果

????????????????}

用ajax + webwork 實作google suggest 效果

????????????????out.println("</response>");

用ajax + webwork 實作google suggest 效果

????????????????matching?=?null;

用ajax + webwork 實作google suggest 效果

????????????????service?=?null;

用ajax + webwork 實作google suggest 效果

????????????????out.close();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????????}else...{

用ajax + webwork 實作google suggest 效果

????????????????response.setStatus(HttpServletResponse.SC_NO_CONTENT);

用ajax + webwork 實作google suggest 效果

????????????}

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????}catch(Exception?e)...{

用ajax + webwork 實作google suggest 效果

????????????System.out.println(e.getMessage());

用ajax + webwork 實作google suggest 效果

????????}

用ajax + webwork 實作google suggest 效果

????????return?"";

用ajax + webwork 實作google suggest 效果

????}

用ajax + webwork 實作google suggest 效果

}

用ajax + webwork 實作google suggest 效果

娉ㄦ??:? ?ㄨ?涓?绫諱腑缁ф?誇? BookActionSupport绫? 杩?涓???缁ф?胯??webwork妗??剁??ActionSupport绫葷??.涓昏?瀹??頒?getParameter()?規?.

NameService.java

用ajax + webwork 實作google suggest 效果

package ?control;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

import ?java.util.ArrayList;

用ajax + webwork 實作google suggest 效果

import ?java.util.Iterator;

用ajax + webwork 實作google suggest 效果

import ?java.util.List;

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

public ? class ?NameService? ... {

用ajax + webwork 實作google suggest 效果

????private?List?names;

用ajax + webwork 實作google suggest 效果

????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????private?NameService(List?list_of_names)...{

用ajax + webwork 實作google suggest 效果

????????this.names?=?list_of_names;

用ajax + webwork 實作google suggest 效果

????}

用ajax + webwork 實作google suggest 效果

????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????public?static?NameService?getInstance(List?list_of_names)...{

用ajax + webwork 實作google suggest 效果

????????return?new?NameService(list_of_names);

用ajax + webwork 實作google suggest 效果

????}

用ajax + webwork 實作google suggest 效果

????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????public?List?findNames(String?prefix)...{

用ajax + webwork 實作google suggest 效果

????????String?prefix_upper?=?prefix.toUpperCase();

用ajax + webwork 實作google suggest 效果

????????List?matches?=?new?ArrayList();

用ajax + webwork 實作google suggest 效果

????????Iterator?iter?=?names.iterator();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????while(iter.hasNext())...{

用ajax + webwork 實作google suggest 效果

????????????String?name?=?(String)?iter.next();

用ajax + webwork 實作google suggest 效果

????????????String?name_upper_case?=?name.toUpperCase();

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

????????????if(name_upper_case.startsWith(prefix_upper))...{

用ajax + webwork 實作google suggest 效果

????????????????boolean?result?=?matches.add(name);

用ajax + webwork 實作google suggest 效果

????????????}

用ajax + webwork 實作google suggest 效果

????????}

用ajax + webwork 實作google suggest 效果

????????return?matches;

用ajax + webwork 實作google suggest 效果

????}

用ajax + webwork 實作google suggest 效果

}

用ajax + webwork 實作google suggest 效果

xworl.xml

用ajax + webwork 實作google suggest 效果

<? xml?version="1.0"?encoding="UTF-8" ?>

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

<! DOCTYPE?xwork?PUBLIC?"-//OpenSymphony?Group//XWork?1.0//EN"?"X:WorkSpaceBFPPropertyconfigwebxwork-1.0.dtd" >

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

< xwork >

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

< include? file ="webwork-default.xml" />

用ajax + webwork 實作google suggest 效果

?????

用ajax + webwork 實作google suggest 效果

????? < package? name ="helloWorld" ?extends ="webwork-default" >

用ajax + webwork 實作google suggest 效果

????????? < interceptors >

用ajax + webwork 實作google suggest 效果

????????????? < interceptor? name ="params" ?class ="com.opensymphony.xwork.interceptor.ParametersInterceptor" />

用ajax + webwork 實作google suggest 效果

????????? </ interceptors > ????

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

???????? < default-interceptor-ref? name ="defaultStack" />

用ajax + webwork 實作google suggest 效果

?????????

用ajax + webwork 實作google suggest 效果

????????? < action? name ="AutoComplete" ?class ="control.AutoComplete" >

用ajax + webwork 實作google suggest 效果

??????????????? < result? name ="success" > /jsp/domainS.jsp </ result >

用ajax + webwork 實作google suggest 效果

??????????????? < interceptor-ref? name ="model-driven" />

用ajax + webwork 實作google suggest 效果

?????????????? < interceptor-ref? name ="params" /> ??????????

用ajax + webwork 實作google suggest 效果

????????? </ action >

用ajax + webwork 實作google suggest 效果

????? </ package >

用ajax + webwork 實作google suggest 效果
用ajax + webwork 實作google suggest 效果

</ xwork > 娉ㄦ??: ???? project????绉版??helloworld ,? java绫誨??control??褰?涓?.? 璇鋒敞???哄??!

Ok, 浠g???版?ょ???.? ?界?舵??google suggest瑕?绠???.? 浣?????浠ヤ?浼?涓?涓?ajax???ㄦ?.