当前位置: 首页 > 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 博客 二、部署过程中遇到的问题和解决办法 …...

树张量网络FPGA部署:亚微秒级AI推理的硬件架构与量化实践

1. 项目概述&#xff1a;当量子启发算法遇上硬件加速在机器学习模型日益庞大、推理延迟要求愈发严苛的今天&#xff0c;我们常常面临一个核心矛盾&#xff1a;模型的强大性能与部署时的资源消耗、计算延迟难以兼得。尤其是在高能物理实验的触发系统、工业实时检测或自动驾驶感知…...

中兴光猫超级权限解锁:zteOnu工具的完整使用指南

中兴光猫超级权限解锁&#xff1a;zteOnu工具的完整使用指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 你是否遇到过这样的困扰&#xff1f;想要调整光猫的网络参数&#xff0c;却…...

LangGraph多智能体能力路由:动态专家选择与负载均衡

LangGraph多智能体能力路由&#xff1a;动态专家选择与负载均衡一、引言 钩子 你是否遇到过这种情况&#xff1a; 当你构建了一个由多个大模型或专业Agent组成的“超级团队”——有的精通数学推理、有的擅长代码生成、有的是情感分析小能手、还有的能写长篇技术文档——却发现整…...

Grafana k6性能工程实践:从压测工具到CI/CD原生可观测性基础设施

1. 这不是又一个“压测脚本包装器”&#xff0c;而是性能工程的基础设施重构Grafana k6——这个名字刚出现时&#xff0c;我第一反应是&#xff1a;又一个基于Node.js封装的轻量级压测工具&#xff1f;毕竟JMeter、Locust、Artillery都走过类似路径。但真正把它跑通第一个真实业…...

昇腾CANN graph-autofusion:Transformer Block 的算子融合深度解析

Transformer 的一个 Block 包含 12 个独立算子&#xff1a;LayerNorm → QKV Linear → Reshape → Transpose → Attention → Concat → Linear → LayerNorm → FFN Up → Gelu → FFN Down → Residual Add。每个独立算子的 launch 开销 ~50μs——12 个算子 50μs 600μ…...

Proxmox断电后启动失败深度复盘:不只是GRUB,LVM卷组损坏才是元凶

Proxmox断电后启动失败深度复盘&#xff1a;不只是GRUB&#xff0c;LVM卷组损坏才是元凶凌晨三点&#xff0c;服务器机房的备用电源耗尽警报响起。当电力恢复后&#xff0c;运维团队发现基于Proxmox VE 7.x的虚拟化平台无法启动——GRUB救援界面不断抛出unknown filesystem和di…...

Ubuntu 22.04双网卡配置踩坑记:netplan apply报错‘默认路由冲突’的三种解法

Ubuntu 22.04双网卡路由冲突实战指南&#xff1a;从紧急修复到高阶策略当你为Ubuntu服务器配置双网卡时&#xff0c;netplan apply命令突然抛出"Conflicting default route declarations for IPv4"错误&#xff0c;这种场景对运维工程师来说再熟悉不过。本文将带你深…...

统计分析方法与假设检验

统计分析方法与假设检验 1. 技术分析 1.1 统计分析概述 统计分析是数据科学的基础方法&#xff1a; 统计分析类型描述统计: 数据概括推断统计: 假设检验回归分析: 变量关系时间序列: 时序数据统计方法:参数检验: t检验、方差分析非参数检验: Mann-Whitney、卡方检验相关性分…...

手把手教你学 Simulink-- 开关磁阻电机(SRM)的转矩分配函数(TSF)控制仿真

目录 手把手教你学 Simulink-- 开关磁阻电机(SRM)的转矩分配函数(TSF)控制仿真 🔥 前言:为什么选 SRM+TSF? 一、SRM 基础:12/8 极结构与数学模型 1.1 电压方程(第 k 相) 1.2 转矩方程(强非线性) 二、TSF 核心原理:一句话讲透 2.1 四种常用 TSF 公式(含参数…...

讲讲libevent底层机制

在 Linux 高并发网络编程领域&#xff0c;libevent 是最经典、最老牌的事件驱动 IO 库&#xff0c;Nginx、Redis、memcached、Tor 等知名项目都基于它二次开发。它封装了 select/poll/epoll/kqueue 等 IO 复用接口&#xff0c;实现了统一的事件驱动模型、定时器、信号处理&…...