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注入等,以保护系统安全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/209393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vtkWidgetRepresentation】第七期 vtkImplicitPlaneRepresentation

很高兴在雪易的CSDN遇见你 前言 本文分享vtkImplicitPlaneRepresentation源码剖析&#xff0c;及相关的实例&#xff0c;该接口主要用于切割交互&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起…

亚马逊运营推荐数仓项目实战

亚马逊运营推荐数仓项目实战 项目技术栈 HadoopSpark (Python)Scala SparkSQLSparkStreaming MongoDB Redis Kafka Flume ( SpringMVC vue) 1 项目介绍 1.1 项目系统架构 项目以推荐系统建设领域知名的经过修改过的中文亚马逊电商数据集作为依托&#xff0c;以某电商…

《ReactJS实践入门》:引领JavaScript前端开发的革新之旅

在当今的软件开发世界中&#xff0c;ReactJS无疑是最为引人注目的JavaScript库之一。对于初学者来说&#xff0c;如何深入理解并掌握这一强大的前端工具&#xff0c;进而应用到实际开发中&#xff0c;一直是他们所面临的问题。而《ReactJS实践入门》一书&#xff0c;正是为了解…

单片机双机通信控制跑马灯

实验要求 两个单片机各驱动8个LED灯&#xff0c;构成两个跑马灯&#xff0c;要求甲单片机LED的点亮方式是从上至下&#xff0c;首先是最上面第一个点亮、其次是前两个点亮、其次是前三个点亮……直至8个灯全部点亮&#xff0c;8个灯全部灭&#xff0c;重复这个过程&#xff0c…

如何恢复已删除的 JPG/JPEG 文件的方法深度解析!

您是否意外丢失或删除了 JPG 或 JPEG 照片&#xff1f;幸运的是&#xff0c;您可以使用照片恢复工具将它们恢复。立即获取适用于 PC 的 JPEG 恢复工具 - 照片恢复&#xff1a; 照片是捕捉和重温生活中特殊时刻的最佳方式。因此&#xff0c;当我们由于硬盘崩溃、意外格式化磁盘…

linux Ubuntu下,第一个C++程序访问数据库,遇到的问题,及解决办法

在ubuntu下安装了mysql&#xff0c;mysql以后&#xff0c;编写了第一个访问数据库的程序&#xff1a; #include <iostream> #include <string> #include <cstdlib> //for system #include <mysql.h>using namespace std;int main() {mysqlpp::Connect…

[ROS2] --- param

1 param介绍 类似C编程中的全局变量&#xff0c;可以便于在多个程序中共享某些数据&#xff0c;参数是ROS机器人系统中的全局字典&#xff0c;可以运行多个节点中共享数据。 全局字典 在ROS系统中&#xff0c;参数是以全局字典的形态存在的&#xff0c;什么叫字典&#xff1f;…

keepalived+lvs 对nginx做负载均衡和高可用

LVS_Director KeepAlivedKeepAlived在该项目中的功能&#xff1a; 1. 管理IPVS的路由表&#xff08;包括对RealServer做健康检查&#xff09; 2. 实现调度器的HA http://www.keepalived.orgKeepalived所执行的外部脚本命令建议使用绝对路径实施步骤&#xff1a; 1. 主/备调度器…

深度解析IP应用场景API:提升风险控制与反欺诈能力

前言 在当今数字化时代&#xff0c;网络安全和用户数据保护成为企业日益关注的焦点。IP应用场景API作为一种强大的工具&#xff0c;不仅能够在线调用接口获取IP场景属性&#xff0c;而且具备识别IP真人度的能力&#xff0c;为企业提供了卓越的风险控制和反欺诈业务能力。本文将…

Java数据结构06——树

1.why: 数组&链表&树 2. 大纲 2.1前中后序 public class HeroNode {private int no;private String name;private HeroNode left;//默认为nullprivate HeroNode right;//默认为nullpublic HeroNode(int no, String name) {this.no no;this.name name;}public int …

Ubuntu编译文件安装SNMP服务

net-snmp源码下载 http://www.net-snmp.org/download.html 编译步骤 指定参数编译 ./configure --prefix/root/snmpd --with-default-snmp-version"2" --with-logfile"/var/log/snmpd.log" --with-persistent-directory"/var/net-snmp" --wi…

MinIO集群模式信息泄露漏洞(CVE-2023-28432)

前言&#xff1a;MinIO是一个用Golang开发的基于Apache License v2.0开源协议的对象存储服务。虽然轻量&#xff0c;却拥有着不错的性能。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据。该漏洞会在前台泄露用户的账户和密码。 0x00 环境配置 …

html、css类名命名思路整理

开发页面时&#xff0c;老是遇到起名问题&#xff0c;越想越头疼&#xff0c;严重影响开发进度&#xff0c;都是在想名字&#xff0c;现在做一下梳理&#xff0c;统一一下思想&#xff0c;希望以后能减少这块的痛苦。 命名规则 [功能名称]__[组成部分名称]--[样式名称] 思路…

空间运算设备-Apple Vision Pro

苹果以其在科技领域的创新而闻名&#xff0c;他们致力于推动技术的边界&#xff0c;这在他们的产品中表现得非常明显。他们尝试开发一项的新型突破性显示技术。在 2023 年 6 月 5 日官网宣布将发布 Apple Vision Pro 头戴空间设备&#xff0c;我们一起来了解一下 Apple Vision …

SVPWM原理及simulink

关注微♥“电击小子程高兴的MATLAB小屋”获得专属优惠 一.SVPWM原理 SPWM常用于变频调速控制系统&#xff0c;经典的SPWM控制主要目的是使变频器的输出电压尽量接近正弦波&#xff0c;并未关注输出的电流波形。而矢量控制的最终目的是得到圆形的旋转磁场&#xff0c;这样就要求…

根据图片生成前端代码:GPT vesion 助你释放效能 | 开源日报 No.98

php/php-src Stars: 36.4k License: NOASSERTION PHP 是一种流行的通用脚本语言&#xff0c;特别适合 Web 开发。快速、灵活和实用&#xff0c;PHP 支持从博客到世界上最受欢迎的网站等各种应用。PHP 遵循 PHP 许可证 v3.01 发布。 主要功能&#xff1a; 提供强大而灵活的脚…

代码随想录算法训练营 ---第五十六天

今天同样是 动态规划&#xff1a;编辑距离问题&#xff01; 第一题&#xff1a; 简介&#xff1a; 本题有两个思路&#xff1a; 1.求出最长公共子串&#xff0c;然后返还 word1.length()word2.length()-2*dp[word1.size()][word2.size()] 本思路解法与求最长公共子串相同&…

Mybatis XML改查操作(结合上文)

"改"操作 先在UserInfoXMLMapper.xml 中 : <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><map…

主窗体、QFile、编码转换、事件、禁止输入特殊字符

主窗体 部件构成 菜单栏、工具栏、主窗体、状态栏。 UI 编辑器设计主窗体 &#x1f4a1; 简易记事本的实现&#xff08;part 1&#xff09; 菜单栏 工具栏&#xff08;图标&#xff09; 主窗体 完善菜单栏&#xff1a; mainwindow.cpp #include "mainwindow.h"…

java8 常用code

文章目录 前言一、lambda1. 排序1.1 按照对象属性排序&#xff1a;1.2 字符串List排序&#xff1a;1.3 数据库排序jpa 2. 聚合2.1 基本聚合&#xff08;返回对象list&#xff09;2.2 多字段组合聚合&#xff08;直接返回对象list数量&#xff09; 二、基础语法2.1 List2.1.1 数…