二级菜单联动 ajax+json

本文介绍了一个使用Ajax和JSON进行交互的Web应用实例,实现了根据用户选择的省份加载对应城市的功能。通过Ajax发送请求获取JSON数据,并利用JSON解析器处理响应数据,最终在页面上动态展示城市选项。

 

Web应用目录:

 具体的代码如下:

AjaxJSON.java

package AjaxJson;

 

import java.io.IOException;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.List;

import net.sf.json.JSONArray;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class AjaxJSON extends HttpServlet {

 

       /**

        *

        */

       private static final long serialVersionUID = 1L;

 

       /**

        * The doGet method of the servlet. <br>

        *

        * This method is called when a form has its tag value method equals to get.

        *

        * @param request the request send by the client to the server

        * @param response the response send by the server to the client

        * @throws ServletException if an error occurred

        * @throws IOException if an error occurred

        */

       public void doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

this.doPost(request, response);

       }

 

       /**

        * The doPost method of the servlet. <br>

        *

        * This method is called when a form has its tag value method equals to post.

        *

        * @param request the request send by the client to the server

        * @param response the response send by the server to the client

        * @throws ServletException if an error occurred

        * @throws IOException if an error occurred

        */

       public void doPost(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

 

              response.setContentType("text/html;charset=utf-8");

              String province =new String(request.getParameter("province").getBytes("ISO-8859-1"),"UTF-8") ; 

        System.out.println("后台中的参数省份是:"+province); 

        List<City> cities = new ArrayList<City>();

        JSONArray jsonArray = null; //需要带入Json-lib包;

              if ("广东省".equals(province)) {

                     City city1 = new City(1, "广州");

                     City city2 = new City(1, "深圳");

                     City city3 = new City(1, "珠海");

                     City city4 = new City(1, "佛山");

                     cities.add(city1);

                     cities.add(city2);

                     cities.add(city3);

                     cities.add(city4);

                     // java对象转换为json字符串

                     jsonArray = JSONArray.fromObject(cities);

              }

 

 

              if("海南省".equals(province))

              {

                     City city1 = new City(1, "海口");

                     City city2 = new City(1, "三亚");

                     cities.add(city1);

                     cities.add(city2);

                     jsonArray = JSONArray.fromObject(cities);

              }

             

              PrintWriter pw = response.getWriter();

              pw.write(jsonArray.toString());

              System.out.println(jsonArray.toString());

       }

 

}

 

 

 

City.java

 

package AjaxJson;

publicclass City {

  

   private Integer id;

   private String name

   public City(Integer id, String name) {

      super();

      this.id = id;

      this.name = name;

   }

   public Integer getId() {

      returnid;

   }

   publicvoid setId(Integer id) {

      this.id = id;

   }

   public String getName() {

      returnname;

   }

   publicvoid setName(String name) {

      this.name = name;

   }

  

  

}

 

Ajax_json.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>Insert title here</title>

</head>

<body>

     <select id="provinceID">

      <option>选择省份</option>

      <option>广东省</option>  

      <option>海南省</option>  

   </select>

   <select id="cityID">

      <option>选择城市</option>

   </select>

  

  

   <script type="text/javascript">

 

         document.getElementById("provinceID").onchange=function()

         {

             var province =  this[this.selectedIndex].innerHTML;

             alert("*****************province="+province);

             var cityElement = document.getElementById("cityID");

             //删除多余的城市,从最后一个开始删除

             var size = cityElement.options.length;

             if(size>1)

                {

             for(var i = size-1;i>0;i--)

                {

                    cityElement.removeChild(cityElement.options[i]);

                }

                }

             //加载XMLHttpRequest对象

              var xhr =  createXHR();

              xhr.onreadystatechange=function()

              {

                 if(xhr.readyState==4)

                    {

                      if(xhr.status==200)

                         {

                          //AJAX引擎读取服务端的信息

                            var xmlDocument = xhr.responseText;

                          //Java语言的String类型转换JavaScriptstring类型

                            var json = eval(xmlDocument);

                            size = json.length;

                            for(var i = 0;i<size;i++)

                               {

                                 //得到每个城市的名称

                                   var city = json[i].name;

                                   var optionElement = document.createElement("option");

                                   optionElement.innerHTML= city;

                                   cityElement.appendChild(optionElement);

                               }

                            

                         }

                    }

              }

             

              var method = "POST";

              var sendData="province="+province;

              var url = "${pageContext.request.contextPath}/AjaxJSON?time="+new Date().getTime();

              alert("url="+url);

              xhr.open(method,url);

              xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");

              xhr.send(sendData);

         }

      //创建XMLHttpRequest

      function createXHR()

      {

         var xhr=null;

         try{

            //ie6

             xhr = new ActiveXObject(microsoft.xmlhttp);

         }catch(e)

        {

            //其他浏览器

            xhr = new XMLHttpRequest();

        }

         return xhr;

      }

 </script>

  

  

 

</body>

</html>

一、简介 通过这个课程带大家从零开发一款功能全面的后台管理系统,包括项目搭建、功能实现到最后的Linux系统部署全过程。本课程使用SpringMVC + Spring + Mybatis作为主体框架,使用AdminLTE作为前端框架,使用主流关系型数据库Mysql作为存储数据库,使用非关系型数据库Redis作为缓存数据库,并集成SpringSecuriy安全框架做权限的动态管理,集成Swagger2自动生成接口文档,集成Druid连接池进行SQL性能监控,集成ActiveMQ消息中间件进行异步解耦,提高性能。最后使用linux系统进行服务部署,并搭建nginx反向代理服务器提高网站性能。 二、学习目标 通过本课程的学习带大家掌握SSM框架的开发流程,并熟练使用SpringSecurity做为安全框架进行权限管理,整合相关优秀的开源框架进行功能开发。还在项目中带大家学习前端相关的Jquery、Bootstrap等知识。课程结束之后希望大家能做到独立进行开发项目的目的,增强解决问题的能力,具备功能落地实现的能力。 三、课程涉及知识点 SpringMVC源码分析Mybatis源码分析通用MapperMysql数据库Redis缓存实现ActiveMQ消息中间件SpringSecurity鉴权Swagger2接口文档生成自定义注解AOP切面编程自定义过滤器Logback日志整合Druid性能监控Linux系统Nginx反向代理Ajax异步请求技术Jquery基本使用AdminLTE前端框架Chart图表-线状图和饼状图百度地图定位城市BootStrap前端框架BootStrap-Table插件BootStrap-Treeview插件Markdown编辑器403、404、500错误页面配置数据库事务消息提示插件toastr.js图片上传插件bootstrap fileinput数字滚动效果pv/uv流量统计...四、课程部分内容截图如下 1、首页 2、菜单管理 3、图床管理 4、图标管理 5、留言反馈管理 6、druid监控 7、登录日志
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arisono

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值