首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

省市区三级联动json数据

省市区三级联动通常指的是在前端页面上,通过选择省份来动态加载对应的城市列表,再通过选择城市来动态加载对应的区县列表。这种交互方式常用于地址输入框或者注册页面等场景。

基础概念

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使得JSON成为理想的数据交换语言。

相关优势

  1. 易于阅读和编写:JSON的结构清晰,便于人类理解和编写。
  2. 易于机器解析:大多数编程语言都有内置的JSON解析库,可以快速地将JSON数据转换为本地对象。
  3. 跨平台:由于JSON是基于文本的,因此它可以在不同的平台和系统之间轻松传输。

类型与应用场景

类型

  • 简单键值对:如{"name": "张三", "age": 30}
  • 对象数组:如[{"id": 1, "name": "北京"}, {"id": 2, "name": "上海"}]

应用场景

  • 地址选择器:如上文提到的省市区三级联动。
  • 配置文件:软件或网站的配置信息可以用JSON来存储。
  • API数据交换:前后端分离的架构中,后端常以JSON格式返回数据。

示例JSON数据

以下是一个简化的省市区三级联动的JSON数据示例:

代码语言:txt
复制
{
  "provinces": [
    {
      "id": "1",
      "name": "广东省",
      "cities": [
        {
          "id": "101",
          "name": "广州市",
          "districts": ["天河区", "越秀区", "海珠区"]
        },
        {
          "id": "102",
          "name": "深圳市",
          "districts": ["福田区", "南山区", "宝安区"]
        }
      ]
    },
    {
      "id": "2",
      "name": "湖南省",
      "cities": [
        {
          "id": "201",
          "name": "长沙市",
          "districts": ["岳麓区", "芙蓉区", "天心区"]
        }
      ]
    }
  ]
}

遇到的问题及解决方法

问题:如何动态加载省市区数据?

解决方法

  1. 准备JSON数据:如上所示,准备好包含省市区信息的JSON数据。
  2. 前端页面结构:创建三个下拉选择框,分别对应省、市、区。
  3. JavaScript逻辑
  • 初始化省份列表。
  • 当省份改变时,根据所选省份的ID过滤出对应的城市列表并更新城市下拉框。
  • 当城市改变时,根据所选城市的ID过滤出对应的区县列表并更新区县下拉框。

示例代码

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>省市区三级联动</title>
<script>
// 假设上面的JSON数据存储在变量jsonData中
const jsonData = {...}; // 省略具体数据

window.onload = function() {
  const provinceSelect = document.getElementById('province');
  const citySelect = document.getElementById('city');
  const districtSelect = document.getElementById('district');

  // 初始化省份列表
  jsonData.provinces.forEach(province => {
    const option = document.createElement('option');
    option.value = province.id;
    option.textContent = province.name;
    provinceSelect.appendChild(option);
  });

  // 省份改变事件
  provinceSelect.addEventListener('change', function() {
    const selectedProvinceId = this.value;
    citySelect.innerHTML = '<option value="">请选择城市</option>';
    districtSelect.innerHTML = '<option value="">请选择区县</option>';
    const selectedProvince = jsonData.provinces.find(p => p.id == selectedProvinceId);
    if (selectedProvince) {
      selectedProvince.cities.forEach(city => {
        const option = document.createElement('option');
        option.value = city.id;
        option.textContent = city.name;
        citySelect.appendChild(option);
      });
    }
  });

  // 城市改变事件(类似省份改变事件的逻辑)
  // ...
};
</script>
</head>
<body>
<select id="province">请选择省份</select>
<select id="city">请选择城市</select>
<select id="district">请选择区县</select>
</body>
</html>

注意:上述代码仅为示例,实际应用中可能需要考虑更多细节和边界情况。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实战|省市区三级联动数据爬取

[pexels-splitshire-1360.jpg] 前言   最近收到客服反应,系统的省市区数据好像不准,并且缺了一些地区。经过询问同事得知,数据库内的数据是从老项目拷贝过来的,有些年头了。...难怪会缺一些数据。正好最近在对接网商银行,发现网商提供了省市区的数据的接口。这就很舒服了哇,抄起键盘就是干,很快的就把同步程序写好了。   然后在同步的过程中,发现网商提供的数据和数据库有些对不上。...于是我打开了中华人民共和国民政部网站来比对异常的数据。   对比的过程中,石锤网商数据不准。值得的是表扬淘宝和京东已经同步了最新的数据了。但是呢,我并没有找到它们的数据接口。...[KFk4cl.jpg]   由于我们需要的是省市区三级数据联动,但是了直辖市只有两级,所以我们人工的给它加上一级。...JSON-2020-11县以上行政区划代码 SQL-2020-11县以上行政区划代码 对于直辖市也可以做两级的,这个主要看产品的需求吧 总结   总体来讲,这个爬虫比较简单,只有简单的几行代码。

2.3K11
  • 实战|省市区三级联动数据爬取

    前言   最近收到客服反应,系统的省市区数据好像不准,并且缺了一些地区。经过询问同事得知,数据库内的数据是从老项目拷贝过来的,有些年头了。难怪会缺一些数据。...正好最近在对接网商银行,发现网商提供了省市区的数据的接口。这就很舒服了哇,抄起键盘就是干,很快的就把同步程序写好了。   然后在同步的过程中,发现网商提供的数据和数据库有些对不上。...于是我打开了中华人民共和国民政部网站来比对异常的数据。   对比的过程中,石锤网商数据不准。值得的是表扬淘宝和京东已经同步了最新的数据了。但是呢,我并没有找到它们的数据接口。...  由于我们需要的是省市区三级数据联动,但是了直辖市只有两级,所以我们人工的给它加上一级。...JSON-2020-11县以上行政区划代码 SQL-2020-11县以上行政区划代码 对于直辖市也可以做两级的,这个主要看产品的需求吧 总结   总体来讲,这个爬虫比较简单,只有简单的几行代码。

    2.8K30

    地址管理之省市区三级联动菜单

    地址管理之省市区三级联动菜单 三级联动表单 导入省市区的数据 下载sql语句的文件 在数据库中执行:source 文件路径即可导入 导入成功之后,在数据库中会出现三张表,分别代表省,市,区 创建实体类...ResponseBody 在cn.tedu.store.controller中新建一个DictController类 使用@Controller注解 使用@RequestMapping /** * 省市区的...); result.setState(1); //设置响应码 result.setMessage("响应成功"); result.setData(provinces); //添加返回的数据...}); } //获取所有的城市信息 function getCities(){ var provinceCode=$("#receiverState").val(); //请求的数据...} }) } //获取所有县区的异步请求 function getAreas(){ var cityCode=$("#receiverCity").val(); //请求的数据

    4.1K30

    从国家统计局官网获取最新省市区三级联动数据

    目前从国家统计局官网找到的最新的县及县以上行政区划代码:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201608/t20160809_1386477.html 可以看出省市区是有明显的缩进的...,所以我们提取数据的时候可以从这个缩进做文章,下面开始分析页面: 查看页面dom结构,可以发现 北京市 市辖区 东城区 ,分别对应 省市区三个级别,他们前面的空格(其实不是空格,是一个特殊的空白符,为了方便就叫空格吧...)数量是不一样的,我们就可以从空格数量判断出该数据的级别,然后存入数据库 解析html,我采用了 htmlagilitypack 组件,下面上代码吧: 效果图: demo下载:http://files.cnblogs.com

    1.5K40

    省市县三级数据联动 -Java

    省市县三级数据联动 需求:实现省市县三级联动问题,责任继续划分,需要Java后端封装省市县三层数据返回给前端。于是乎开始探索之旅。...尝试一: 思路:首先查询所有的省份和直辖市信息,最后根据省份的ID和直辖市的ID查询它的第二级和第三级。...province.getCodeId())) .collect(Collectors.toList()); // 步骤三: 根据市级ID取得县信息或者区信息 (第三级.../** * @Description 省 -> 市 -> 县 * 由于频繁请求数据库,取得全部省市县数据数据较慢,因此将数据全部取出交给JVM进行处理。...list.removeIf( f -> f.getParentId().equals(province.getCodeId())); // 步骤三: 根据市级ID取得县信息或者区信息 (第三级

    2.7K20

    Vue项目使用mt-picker实现省市区三级联动踩坑记录

    最近用 Vue 开发一个项目,需要实现一个省市区三级联动的功能。 使用的是饿了么团队的移动端组件库 Mint UI 中的 Picker 组件,官方的文档也是十分的不详细。...下面开始进入正题: 我这里使用的是后端提供的省市区数据接口,为了方便最下面代码的理解,我再次贴一下我所使用的数据:省市区三级联动数据 您也可以直接下载我提供的 json 文件:点击下载 picker...,后台不进去要省市区的名字,而且需要省市区的 id ,所以 values 我是这样写的。...      {name:'',code:''},//市       {name:'',code:''},//区     ],   } }, methods: {   getRegion(){//获取省市区数据...这样就可以实现省市区三级联动了。

    18920
    领券