直奔主题是我个一贯作风,这次也不例外,首先声明的一点是这里主要借助于prototype(1.5)来实现:
view:
- <form action="genDatas" method="post">
- <span>
- <select name="firstData" id="firstData">
- <option value="0">请选择
- <option value="1">data1
- <option value="2">data2
- <option value="3">data3
- select>--
- <span id="sys_tag_div">
- <select name="secondData" id="secondData">
- <option value="0">请选择
- select>
- span>
- <script language="javascript" type="text/javascript">
- new Form.Element.EventObserver('firstData',
function(element, value) {new Ajax.Updater('sys_tag_div',
'/ajaxweb/select_data',
{asynchronous:true, evalScripts:true,
parameters:'firstData='+value+'&secondData='})}) - script>
- <script>
- new Ajax.Updater("sys_tag_div", "/ajaxweb/select_data",
{asynchronous:true, evalScripts:true,
parameters:"firstData="+$("firstData").value+"&secondData="});script> - span>
- form>
- package ec.snow.ajax;
- import java.io.*;
- import java.util.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class SelectDataServlet extends HttpServlet
- {
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException
- {
- response.setContentType("text/html;charset=gb2312");
- String key = request.getParameter("firstData");
- if((key==null)||(key.trim().length()==0))key = "0";
- String secondData = getDatasInfoByKey(key);
- PrintWriter out = response.getWriter();
- out.println(secondData);
- }
- public void doPost(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException
- {
- doGet(request,response);
- }
- private String getDatasInfoByKey(String key){
- String secondData = "≶select name='secondData'><option value='0'>请选择";
- Map datas = dataFromDb();
- String res = datas.get(key);
- if(res!=null){
- secondData+=res;
- }
- return secondData+"</select>";
- }
- private Map dataFromDb(){
- Map datas = new HashMap();
- datas.put("1","<option value='11'>data11data12");
- datas.put("2","data21data22data23");
- datas.put("3","data31data32data33");
- return datas;
- }
- }