当前位置: 首页 > news >正文

php使用vue.js实现省市区三级联动

参考gpt 有问题问gpt

 实现效果

 

现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码:

HTML部分:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>省市区三级联动</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js"></script><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app"><select v-model="selectedProvince" @change="getCity"><option value="">请选择省份</option><option v-for="province in provinces" :value="province.id">{{ province.name }}</option></select><select v-model="selectedCity" @change="getDistrict"><option value="">请选择城市</option><option v-for="city in cities" :value="city.id">{{ city.name }}</option></select><select v-model="selectedDistrict"><option value="">请选择区域</option><option v-for="district in districts" :value="district.id">{{ district.name }}</option></select>
</div><script>new Vue({el: '#app',data: {selectedProvince: '',selectedCity: '',selectedDistrict: '',provinces: [],cities: [],districts: []},mounted() {this.getProvinces();},methods: {getProvinces() {axios.get('get_data.php', {params: {dataType: 'provinces'}}).then(response => {this.provinces = response.data;}).catch(error => {console.error(error);});},getCity() {this.selectedCity = '';this.selectedDistrict = '';if (this.selectedProvince !== '') {axios.get('get_data.php', {params: {dataType: 'cities',provinceId: this.selectedProvince}}).then(response => {this.cities = response.data;}).catch(error => {console.error(error);});} else {this.cities = [];this.districts = [];}},getDistrict() {this.selectedDistrict = '';if (this.selectedCity !== '') {axios.get('get_data.php', {params: {dataType: 'districts',cityId: this.selectedCity}}).then(response => {this.districts = response.data;}).catch(error => {console.error(error);});} else {this.districts = [];}}}});
</script>
</body>
</html>

PHP部分

具体逻辑需要按自己需求写,下面数据只是返回案例 

<?php
$dataType = $_GET['dataType'];if ($dataType === 'provinces') {// 假设省份数据存储在数据库中$provinces = array(array('id' => 1, 'name' => '省份A'),array('id' => 2, 'name' => '省份B'),array('id' => 3, 'name' => '省份C'));header('Content-Type: application/json');echo json_encode($provinces);
} elseif ($dataType === 'cities') {// 假设城市数据存储在数据库中$provinceId = $_GET['provinceId'];// 根据省份id查询对应的城市数据// 这里使用简单的数组代替数据库查询过程$cities = array();if ($provinceId == 1) {$cities = array(array('id' => 1, 'name' => '城市A1'),array('id' => 2, 'name' => '城市A2'),array('id' => 3, 'name' => '城市A3'));} elseif ($provinceId == 2) {$cities = array(array('id' => 4, 'name' => '城市B1'),array('id' => 5, 'name' => '城市B2'),array('id' => 6, 'name' => '城市B3'));} elseif ($provinceId == 3) {$cities = array(array('id' => 7, 'name' => '城市C1'),array('id' => 8, 'name' => '城市C2'),array('id' => 9, 'name' => '城市C3'));}header('Content-Type: application/json');echo json_encode($cities);
} elseif ($dataType === 'districts') {// 假设区域数据存储在数据库中$cityId = $_GET['cityId'];// 根据城市id查询对应的区域数据// 这里使用简单的数组代替数据库查询过程$districts = array();if ($cityId == 1) {$districts = array(array('id' => 1, 'name' => '区域A1'),array('id' => 2, 'name' => '区域A2'),array('id' => 3, 'name' => '区域A3'));} elseif ($cityId == 2) {$districts = array(array('id' => 4, 'name' => '区域B1'),array('id' => 5, 'name' => '区域B2'),array('id' => 6, 'name' => '区域B3'));} elseif ($cityId == 3) {$districts = array(array('id' => 7, 'name' => '区域C1'),array('id' => 8, 'name' => '区域C2'),array('id' => 9, 'name' => '区域C3'));}header('Content-Type: application/json');echo json_encode($districts);
}
?>

PHP省市区三级联动是一种常见的技术实现,用于实现根据用户选择的省份、城市和区县,动态获取相关数据的功能。下面是一个简单的步骤指导:

  1. 创建数据库表结构:

    • 创建一个省份表,包含省份ID和省份名称字段。
    • 创建一个城市表,包含城市ID、城市名称和所属省份ID字段。
    • 创建一个区县表,包含区县ID、区县名称和所属城市ID字段。
  2. 编写前端页面:

    • 创建三个下拉框,分别用于展示省份、城市和区县的选项。
    • 使用JavaScript监听省份下拉框的变化事件,当选择省份时,发送Ajax请求到后端处理。
    • 后端根据省份ID查询对应的城市数据,并将城市数据返回给前端。
    • 前端根据返回的城市数据,动态更新城市下拉框的选项。
    • 类似地,监听城市下拉框的变化事件,发送Ajax请求获取对应的区县数据,并更新区县下拉框的选项。
  3. 编写后端处理逻辑:

    • 接收前端发送的Ajax请求,获取请求中的省份ID或城市ID。
    • 根据省份ID或城市ID,查询数据库获取对应的数据。
    • 将查询到的数据以JSON格式返回给前端。

这只是一个简单的示例,实际的实现可能会更复杂。你可以根据项目需求进行相应的修改和扩展。同时,建议使用合适的安全措施,如输入验证和防止SQL注入等,以保护系统安全。

相关文章:

php使用vue.js实现省市区三级联动

参考gpt 有问题问gpt 实现效果 现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市区三级联动…...

软件测试:测试用例八大要素模板

一、通用测试用例八要素 1、用例编号&#xff1b; 2、测试项目&#xff1b; 3、测试标题&#xff1b; 4、重要级别&#xff1b; 5、预置条件&#xff1b; 6、测试输入&#xff1b; 7、操作步骤&#xff1b; 8、预期输出 二、具体分析通用测试用例八要素 1、用例编号 一般是数字…...

C语言进阶之路之顶峰相见篇

目录 一、学习目标 二、宏定义 预处理 宏的概念 带参宏 无值宏定义 三、条件编译 条件编译 条件编译的使用场景 四、头文件 头文件的作用 头文件的内容 头文件的基础语句&#xff1a; GCC编译器的4个编译步骤&#xff1a; 总结 一、学习目标 掌握宏定义含义和用…...

第76讲:MySQL数据库中常用的命令行工具的基本使用

文章目录 1.mysql客户端命令工具2.mysqladmin管理数据库的客户端工具3.mysqlbinlog查看数据库中的二进制日志4.mysqlshow统计数据库中的信息5.mysqldump数据库备份工具6.mysqllimport还原备份的数据7.source命令还原SQL类型的备份文件 MySQL数据库提供了很多的命令行工具&#…...

初级数据结构(二)——链表

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 初级数据结构&#xff08;一&#xff09;——顺序表 | NULL 下一篇-> 1、链表特征 与顺序表数据连续存放不同&#xff0c;链表中每个数据是分开存放的&#xff0c;而且存放的位置尤其零散&#…...

Kubernetes架构及核心部件

文章目录 1、Kubernetes集群概述1.1、概述1.2、通过声明式API即可 2、Kubernetes 集群架构2.1、Master 组件2.1.1、API Server2.1.2、集群状态存储2.1.3、控制器管理器2.1.4、调度器 2.2、Worker Node 组件2.2.1、kubelet2.2.2、容器运行时环境2.2.3、kube-proxy 2.3、图解架构…...

RAW和YUV的区别

RAW是指未经过任何压缩或处理的原始图像数据。在摄像头中&#xff0c;原始图像数据可以是来自图像传感器的未经处理的像素值。这些原始数据通常以一种Bayer模式的形式存在&#xff0c;其中每个像素仅包含一种颜色信息&#xff08;红色、绿色或蓝色&#xff09;&#xff0c;需要…...

Linux常见问题-获取日志方法总结(Ubuntu/Debian)

1 日志基本路径和基础查看方法 在 Ubuntu 或 Debian 11 系统中&#xff0c;可以通过不同的日志文件来获取系统日志和内核日志。日志常见路径如下&#xff1a; /var/log/syslog&#xff1a;包含系统的整体日志&#xff0c;包括各种系统事件和服务日志。/var/log/auth.log&…...

【机器视觉技术栈】03 - 镜头

镜头 定焦镜头变焦镜头远心镜头 FA镜头与远心镜头的区别&#xff1f; 焦距越小畸变程度越大&#xff0c;精度要求不高的场景可以使用焦距大的FA镜头做尺寸测量&#xff0c;但焦距越大带来的问题就是整个机械设备越大。精度高的场景使用远心镜头进行尺寸测量。 光学基础知识…...

判断一个Series序列的值是否为单调递减Series.is_monotonic_decreasing

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断一个Series序列中 各值是否单调递减 s.is_monotonic_decreasing [太阳]选择题 以下代码的输出结果中正确的是? import pandas as pd s1 pd.Series([3,2,1]) s2 pd.Series([3,2,4]) pri…...

CSPNet: A New Backbone that can Enhance Learning Capability of CNN(2019)

文章目录 -Abstract1 Introduction2 Related workformer work 3 Method3.1 Cross Stage Partial Network3.2 Exact Fusion Model 4 Experiments5 Conclusion 原文链接 源代码 - 梯度信息重用&#xff08;有别于冗余的梯度信息&#xff09;可以减少计算量和内存占用提高效率&am…...

本科毕业论文查重的依据

大家好&#xff0c;今天来聊聊本科毕业论文查重的依据&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 本科毕业论文查重依据&#xff1a;维护学术诚信的基石 摘要&#xff1a; 本科毕业论文是衡量学生学…...

如何利用Axure制作移动端产品原型

Axure是一款专业的快速原型设计工具&#xff0c;作为专业的原型设计工具&#xff0c;Axure 能够快速、高效地创建原型&#xff0c;同时支持多人协作设计和版本控制管理。它已经得到了许多大公司的采用&#xff0c;如IBM、微软、思科、eBay等&#xff0c;这些公司都利用Axure 进…...

Java中时间之间的转换

Java中常见的时间类有&#xff1a;Date、Calendar、SimpleDateFormat等。下面对不同时间类之间的转换进行介绍。 1、Date和Calendar之间的转换 Date和Calendar都可以表示时间&#xff0c;但是它们的使用方式不同。Date是一个表示特定时间点的类&#xff0c;而Calendar则是一个…...

【win32_005】调试信息打印到控制台----2种简单方法

方法1&#xff1a;使用win32 api函数 PCTSTR str1 TEXT("123456789");AllocConsole();HANDLE HConsole GetStdHandle(STD_OUTPUT_HANDLE);WriteConsole(HConsole, str1, 9, NULL, NULL);https://learn.microsoft.com/zh-cn/windows/console/writeconsole 方…...

PPT添加备注

0 Preface/Foreward 1 添加备注方法 添加备注方法&#xff1a;在page的最下端&#xff0c;有一个空白文本框&#xff0c;该文本框用来添加备注。...

Ubuntu20.04使用cephadm部署ceph集群

文章目录 Requirements环境安装Cephadm部署Ceph单机集群引导&#xff08;bootstrap&#xff09;建立新集群 管理OSD列出可用的OSD设备部署OSD删除OSD 管理主机列出主机信息添加主机到集群从集群中删除主机 部署Ceph集群 Cephadm通过在单个主机上创建一个Ceph单机集群&#xff0…...

激光打标机在智能手表上的应用:科技与时尚的完美结合

随着科技的飞速发展&#xff0c;智能手表已经成为我们日常生活中不可或缺的智能设备。而在智能手表制造中&#xff0c;激光打标机扮演着至关重要的角色。本文将详细介绍激光打标机在智能手表制造中的应用&#xff0c;以及其带来的优势和影响。 ​ 一、激光打标机在智能手表制…...

ROS-ROS通信机制-参数服务器

文章目录 一、基础理论知识二、C实现三、Python实现 一、基础理论知识 参数服务器在ROS中主要用于实现不同节点之间的数据共享。参数服务器相当于是独立于所有节点的一个公共容器&#xff0c;可以将数据存储在该容器中&#xff0c;被不同的节点调用&#xff0c;当然不同的节点…...

在github中通过action自动化部署 hugo academic theme,实现上传md文件更新博客内容

在github中通过action自动化部署 hugo academic theme 一、GitHub Action自动化部署Hugo博客方法 主要参考&#xff1a;【Hugo网站搭建】GitHub Action自动化部署Hugo博客 次要参考&#xff1a;使用 Github Action 自动部署 Hugo 博客 二、部署过程中遇到的问题和解决办法 …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析&#xff1a;AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github&#xff1a;https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...