使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例

发布时间 - 2026-01-11 03:16:00    点击率:

使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择。

实现技术:php ajax

实现:省级下拉变化时市下拉区下拉跟着变化,市级下拉变化时区下拉跟着变化。

使用chinastates表查询

Ajax加载数据

1.这是chinastates表

2.做一个简单php:Ajax_eg.php

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <script src="bootstrap/js/jquery-1.11.2.min.js"></script>
 </head>
 <style>
 .sanji{
  margin-left: 550px;
  margin-top: 150px;
 }
 </style>
 <body>
  <div class="sanji"> </div>
 </body>

</html>

3.根据前一个页面做jquery:Ajax_ssq.js

// JavaScript Document

//当页面内容都加载完才执行
$(document).ready(function(e) {
 //加载三个下拉列表
 $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>");
 
 //加载显示数据
 //1.加载省份
 LoadSheng();
 //2.加载市
 LoadShi();
 //3.加载区
 LoadQu();

 //当省份选中变化,重新加载市和区
 $("#sheng").change(function(){ //当元素的值发生改变时,会发生 change 事件,该事件仅适用于文本域(text field),以及 textarea 和 select 元素。
  //加载市
   LoadShi();
  //加载区
   LoadQu();
  
  })
 
 //当市选中变化,重新加载区
 $("#shi").change(function(){
  //加载区
  LoadQu();
  })
  
 
});


//加载省份信息
function LoadSheng()
{
 //取父级代号
 var pcode ="0001";
 
 //根据父级代号查数据
 $.ajax({
    //取消异步,也就是必须完成上面才能走下面
    async:false,
    url:"load.php",
    data:{pcode:pcode},
    type:"POST",
    dataType:"JSON",
    success: function(data){
      var str="";
      //遍历数组,把它放入sj
      for(var k in data){
       str=str+"<option value='"+data[k].[0]+"'>"+data[k].[1]+"</option>";
      }
      $("#sheng").html(str);      
    }      
  }); 
}

//加载市信息
function LoadShi()
{
 //取父级代号
 var pcode =$("#sheng").val();
 
 //根据父级代号查数据
 $.ajax({
    //取消异步,也就是必须完成上面才能走下面
    async:false,
    url:"load.php",
    data:{pcode:pcode},
    type:"POST",
    dataType:"JSON",
    success: function(data){
      var str="";
      //遍历数组,把它放入sj
      for(var k in data){
       str=str+"<option value='"+data[k].[0]+"'>"+data[k].[0]+"</option>";
      }
      $("#shi").html(str);      
    }      
  }); 
}

//加载区信息
function LoadQu()
{
 //取父级代号
 var pcode =$("#shi").val();
 
 //根据父级代号查数据
 $.ajax({
    //不需要取消异步
    url:"load.php",
    data:{pcode:pcode},
    type:"POST",
    dataType:"JSON",
    success: function(data){
      var str="";
      //遍历数组,把它放入sj
      for(var k in data){
       str=str+"<option value='"+data[k].[0]+"'>"+data[k].[1]+"</option>";       
      }
      $("#qu").html(str);      
    }      
  }); 
}

4.再把数据库连接起来 :load.php,把DBDA重新加载一个方法:JsonQuery

<?php
$pcode = $_POST["pcode"];
require_once "./DBDA.class.php";
$db = new DBDA();

$sql = "select * from chinastates where parentareacode='{$pcode}'";
echo $db->JsonQuery($sql,0);

封装类

<?php 
class DBDA{
 public $host="localhost";
 public $uid="root";
 public $pwd="";
 public $dbname="0710_info";
 /* 
  query方法:执行用户给的sql语句,并返回相应的结果
  $sql:用户需要执行的sql语句
  $type:用户需要执行的sql语句的类型
  return:如果是增删语句改返回true或false,如果是查询语句返回二维数组
  */
 public function query($sql,$type=1){//默认true为增删改
  $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
  if(mysqli_connect_error()){
   return "连接失败!"; 
  }
  $result = $db->query($sql);
  if($type==1){
   return $result;//增删改语句返回true或false
  }else{
   return $result->fetch_all();//查询语句返回二维数组
  } 
 }
 //此方法用于ajax中用于对取出的数据(二维数组)进行拼接字符串处理
 public function StrQuery($sql,$type=1){
  $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
  if(mysqli_connect_error()){
   return "连接失败!"; 
  }
  $result = $db->query($sql);
  if($type==1){
   return $result;//增删改语句返回true或false
  }else{
   $arr = $result->fetch_all();//查询语句返回二维数组
   $str = "";
   foreach($arr as $v){
    $str = $str.implode("^", $v)."|";
   }
   $str = substr($str, 0,strlen($str)-1);
   return $str;
  } 
 } 
 //此方法用于ajax中用于返回为json数据类型时使用
 public function JsonQuery($sql,$type=1){
  $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
  if(mysqli_connect_error()){
   return "连接失败!"; 
  }
  $result = $db->query($sql);
  if($type==1){
   return $result;//增删改语句返回true或false
  }else{
   $arr = $result->fetch_all();//查询语句返回二维(关联)数组
   return json_encode($arr);//将数组转换成json
  } 
 }
}

实现效果:

以上这篇使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# 实现省市区三级联动  # PHP+Mysql+Ajax+JS实现省市区三级联动  # AJAX省市区三级联动下拉菜单(java版)  # asp.net省市三级联动的DropDownList+Ajax的三种框架(aspnet/Jquery  # ajax三级联动下拉菜单效果  # jQuery ajax实现省市县三级联动  # ajax三级联动的实现方法  # jquery+ajax实现省市区三级联动效果简单示例  # jquery+ajax实现省市区三级联动(封装和不封装两种方式)  # ajax实现无刷新省市县三级联动  # Ajax实现三级联动效果  # 加载  # 遍历  # 把它  # 给大家  # 走下  # 这是  # 不需要  # 适用于  # 希望能  # 做一个  # 这篇  # 市级  # 转换成  # 再把  # 小编  # 大家多多  # jquery  # js  # margin  # sanji 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Swift中swift中的switch 语句  教你用AI润色文章,让你的文字表达更专业  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Java遍历集合的三种方式  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何制作一个表白网站视频,关于勇敢表白的小标题?  Python函数文档自动校验_规范解析【教程】  网页设计与网站制作内容,怎样注册网站?  如何快速搭建虚拟主机网站?新手必看指南  免费网站制作appp,免费制作app哪个平台好?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  浅述节点的创建及常见功能的实现  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel如何实现文件上传和存储?(本地与S3配置)  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  JavaScript如何操作视频_媒体API怎么控制播放  iOS中将个别页面强制横屏其他页面竖屏  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  利用JavaScript实现拖拽改变元素大小  Bootstrap整体框架之JavaScript插件架构  canvas 画布在主流浏览器中的尺寸限制详细介绍  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何在阿里云部署织梦网站?  Laravel如何使用Service Container和依赖注入?(代码示例)  详解vue.js组件化开发实践  开心动漫网站制作软件下载,十分开心动画为何停播?  javascript中的try catch异常捕获机制用法分析  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  高防服务器租用首荐平台,企业级优惠套餐快速部署  大学网站设计制作软件有哪些,如何将网站制作成自己app?  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  创业网站制作流程,创业网站可靠吗?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Python文件异常处理策略_健壮性说明【指导】  php485函数参数是什么意思_php485各参数详细说明【介绍】  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  公司门户网站制作流程,华为官网怎么做?  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel怎么实现模型属性的自动加密