Ajax_动态加载列表框

JSP部分:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

   <title>My JSP 'index.jsp' starting page</title>
   <meta http-equiv="pragma" content="no-cache">
   <meta http-equiv="cache-control" content="no-cache">
   <meta http-equiv="expires" content="0">
   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
   <meta http-equiv="description" content="This is my page">
   <script type="text/javascript">
  var xmlHttp;
  function createXMLHttpRequest() {
     if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     }
     else if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
     }
  }

  function refreshModelList() {
     var make = document.getElementById("make").value;
     var modelYear = document.getElementById("modelYear").value;
     if(make == "" || modelYear == "") {
        clearModelsList();
        return;
     }
     var url = "RefreshModelListServlet?"+ createQueryString(make, modelYear) + "&ts=" + new Date().getTime();
     createXMLHttpRequest();
       xmlHttp.onreadystatechange = handleStateChange;
     xmlHttp.open("GET", url, true);
     xmlHttp.send(null);
  }

  function createQueryString(make, modelYear) {
     var queryString = "make=" + make + "&modelYear=" + modelYear;
     return queryString;
  }

  function handleStateChange() {
     if(xmlHttp.readyState == 4) {
      if(xmlHttp.status == 200) {
         updateModelsList();
      }
     }
  }

  function updateModelsList() {
      clearModelsList();
     var models = document.getElementById("models");
     var results = xmlHttp.responseXML.getElementsByTagName("model");
     var option = null;
     for(var i = 0; i < results.length; i++) {
      option = document.createElement("option");
      option.appendChild(document.createTextNode(results[i].firstChild.nodeValue));
      models.appendChild(option);
     }
  }

  function clearModelsList() {
     var models = document.getElementById("models");
     while(models.childNodes.length > 0) {
        models.removeChild(models.childNodes[0]);
     }
  }
  </script>
</head>
<body>
   <h1>
    Select Model Year and Make
   </h1>
   <form action="#">
    <span style="font-weight:bold;">Model Year:</span>
    <select id="modelYear" οnchange="refreshModelList();">
     <option value="">
      Select One
     </option>
     <option value="2006">
      2006
     </option>
     <option value="1995">
      1995
     </option>
     <option value="1985">
      1985
     </option>
     <option value="1970">
      1970
     </option>
    </select>
    <br />
    <br />
    <span style="font-weight:bold;">Make:</span>
    <select id="make" οnchange="refreshModelList();">
     <option value="">
      Select One
     </option>
     <option value="Chevrolet">
      Chevrolet
     </option>
     <option value="Dodge">
      Dodge
     </option>
     <option value="Pontiac">
      Pontiac
     </option>
    </select>
    <br />
    <br />
    <span style="font-weight:bold;">Models:</span>
    <br />
    <select id="models" size="6" style="width:300px;">
    </select>
   </form>
</body>
</html>

Servlet部分:

public class RefreshModelListServlet extends HttpServlet {

private static List<MakeModelYear> availableModels = new ArrayList();

public void init() throws ServletException {
   availableModels.add(new MakeModelYear(2006, "Dodge", "Charger"));
   availableModels.add(new MakeModelYear(2006, "Dodge", "Magnum"));
   availableModels.add(new MakeModelYear(2006, "Dodge", "Ram"));
   availableModels.add(new MakeModelYear(2006, "Dodge", "Viper"));
   availableModels.add(new MakeModelYear(1995, "Dodge", "Avenger"));
   availableModels.add(new MakeModelYear(1995, "Dodge", "Intrepid"));
   availableModels.add(new MakeModelYear(1995, "Dodge", "Neon"));
   availableModels.add(new MakeModelYear(1995, "Dodge", "Spirit"));
   availableModels.add(new MakeModelYear(1985, "Dodge", "Aries"));
   availableModels.add(new MakeModelYear(1985, "Dodge", "Daytona"));
   availableModels.add(new MakeModelYear(1985, "Dodge", "Diplomat"));
   availableModels.add(new MakeModelYear(1985, "Dodge", "Omni"));
   availableModels.add(new MakeModelYear(1970, "Dodge", "Challenger"));
   availableModels.add(new MakeModelYear(1970, "Dodge", "Charger"));
   availableModels.add(new MakeModelYear(1970, "Dodge", "Coronet"));
   availableModels.add(new MakeModelYear(1970, "Dodge", "Dart"));
   availableModels.add(new MakeModelYear(2006, "Chevrolet", "Colorado"));
   availableModels.add(new MakeModelYear(2006, "Chevrolet", "Corvette"));
   availableModels.add(new MakeModelYear(2006, "Chevrolet", "Equinox"));
   availableModels.add(new MakeModelYear(2006, "Chevrolet", "Monte Carlo"));
   availableModels.add(new MakeModelYear(1995, "Chevrolet", "Beretta"));
   availableModels.add(new MakeModelYear(1995, "Chevrolet", "Camaro"));
   availableModels.add(new MakeModelYear(1995, "Chevrolet", "Cavalier"));
   availableModels.add(new MakeModelYear(1995, "Chevrolet", "Lumina"));
   availableModels.add(new MakeModelYear(1985, "Chevrolet", "Cavalier"));
   availableModels.add(new MakeModelYear(1985, "Chevrolet", "Chevette"));
   availableModels.add(new MakeModelYear(1985, "Chevrolet", "Celebrity"));
   availableModels.add(new MakeModelYear(1985, "Chevrolet", "Citation II"));
   availableModels.add(new MakeModelYear(1970, "Chevrolet", "Bel Air"));
   availableModels.add(new MakeModelYear(1970, "Chevrolet", "Caprice"));
   availableModels.add(new MakeModelYear(1970, "Chevrolet", "Chevelle"));
   availableModels.add(new MakeModelYear(1970, "Chevrolet", "Monte Carlo"));
   availableModels.add(new MakeModelYear(2006, "Pontiac", "G6"));
   availableModels.add(new MakeModelYear(2006, "Pontiac", "Grand Prix"));
   availableModels.add(new MakeModelYear(2006, "Pontiac", "Solstice"));
   availableModels.add(new MakeModelYear(2006, "Pontiac", "Vibe"));
   availableModels.add(new MakeModelYear(1995, "Pontiac", "Bonneville"));
   availableModels.add(new MakeModelYear(1995, "Pontiac", "Grand Am"));
   availableModels.add(new MakeModelYear(1995, "Pontiac", "Grand Prix"));
   availableModels.add(new MakeModelYear(1995, "Pontiac", "Firebird"));
   availableModels.add(new MakeModelYear(1985, "Pontiac", "6000"));
   availableModels.add(new MakeModelYear(1985, "Pontiac", "Fiero"));
   availableModels.add(new MakeModelYear(1985, "Pontiac", "Grand Prix"));
   availableModels.add(new MakeModelYear(1985, "Pontiac", "Parisienne"));
   availableModels.add(new MakeModelYear(1970, "Pontiac", "Catalina"));
   availableModels.add(new MakeModelYear(1970, "Pontiac", "GTO"));
   availableModels.add(new MakeModelYear(1970, "Pontiac", "LeMans"));
   availableModels.add(new MakeModelYear(1970, "Pontiac", "Tempest"));
}

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

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
}

protected void processRequest(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
   response.setContentType("text/html;charset=UTF-8");
   int modelYear = Integer.parseInt(request.getParameter("modelYear"));
   String make = request.getParameter("make");
   StringBuffer results = new StringBuffer("<models>");
   MakeModelYear availableModel = null;
   for (Iterator it = availableModels.iterator(); it.hasNext();) {
    availableModel = (MakeModelYear) it.next();
    if (availableModel.modelYear == modelYear) {
     if (availableModel.make.equals(make)) {
      results.append("<model>");
      results.append(availableModel.model);
      results.append("</model>");
     }
    }
   }
   results.append("</models>");
   response.setContentType("text/xml");
   response.getWriter().write(results.toString());
}


private static class MakeModelYear {
   private int modelYear;

   private String make;

   private String model;

   public MakeModelYear(int modelYear, String make, String model) {
    this.modelYear = modelYear;
    this.make = make;
    this.model = model;
   }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值