AJAX解析json之 下拉框 二级联动

2024-06-20 18:58

本文主要是介绍AJAX解析json之 下拉框 二级联动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个例子跟上次写的ajax解析xml实现的效果是一样的!

是实现省、市二级联动,当选择某一省时,改省下面的市就会在另一个下拉框显示出来。在本例中AJAX通过解析json文件得到的数据传回到jsp页面,其中省市均是从数据库取到的值:

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head></head><script type="text/javascript">var xmlHttp=null;//创建xmlhttprequest对象 if(window.XMLHttpRequest){xmlHttp=new XMLHttpRequest();}else{xmlHttp=new ActiveObject("Microsoft.XMLHTTP");}var url="JsonGetP?time="+new Date().getTime();function getsheng(){xmlHttp.open("post",url,true);xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");xmlHttp.send();xmlHttp.onreadystatechange=getprovince;}function getprovince(){if(xmlHttp.readyState==4 && xmlHttp.status==200){//alert(xmlHttp.responseText);var proText=xmlHttp.responseText;var pro=eval("("+proText+")");//alert(pro[1].province);var pselect=document.getElementById("sheng");for(var i=0;i<pro.length;i++){pselect.options.add(new Option(pro[i].province,pro[i].shorter));}}}function getcity(){xmlHttp.open("post",url,true);xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");var province=document.getElementById("sheng").value;//	alert("省:"+province);xmlHttp.send("province="+province);xmlHttp.onreadystatechange=setcity;}function setcity(){if(xmlHttp.readyState==4 && xmlHttp.status==200){var city=document.getElementById("city");city.options.length=0;var cityText=xmlHttp.responseText;//alert(cityText);var ct=eval("("+cityText+")");//alert(ct[1].cityname);for(var i=0;i<ct.length;i++){var cityname=ct[i].cityname;//alert(cityname);city.options.add(new Option(cityname,cityname));}}}</script><body οnlοad="getsheng()">省:<select name="sheng" id="sheng" οnchange="getcity()"><option>请选择</option></select>市:<select name="city" id="city"></select></body>
</html>
servlet代码:
public class JsonGetP extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");String province = request.getParameter("province");if (province != null) {sendCity(request, response, province);} else {ShengDao sd = new ShengDao();List<Sheng> list = sd.selAll();response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();response.setContentType("text/xml");out.print("[");for (Sheng sheng : list) {JSONObject jsonobj=JSONObject.fromObject(sheng);String str=jsonobj.toString();out.print(str+",");out.println();}out.print("]");}}public void sendCity(HttpServletRequest request,HttpServletResponse response, String shorter) {try {request.setCharacterEncoding("utf-8");} catch (UnsupportedEncodingException e1) {e1.printStackTrace();}try {response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();response.setContentType("text/html");ShengDao sd = new ShengDao();out.print("[");List<City> list = sd.selAll(shorter);for (City city : list) {JSONObject jsonobj=JSONObject.fromObject(city);String str=jsonobj.toString();out.print(str+",");out.println();}out.print("]");} catch (IOException e) {e.printStackTrace();}}}

这篇关于AJAX解析json之 下拉框 二级联动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078974

相关文章

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

在Rust中要用Struct和Enum组织数据的原因解析

《在Rust中要用Struct和Enum组织数据的原因解析》在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有... 目录为什么在Rust中要用Struct和Enum组织数据?一、使用struct组织数据:将相关字段绑

使用Java实现一个解析CURL脚本小工具

《使用Java实现一个解析CURL脚本小工具》文章介绍了如何使用Java实现一个解析CURL脚本的工具,该工具可以将CURL脚本中的Header解析为KVMap结构,获取URL路径、请求类型,解析UR... 目录使用示例实现原理具体实现CurlParserUtilCurlEntityICurlHandler

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC