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


Posted in PHP onSeptember 15, 2017

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

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

实现技术:php ajax

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

使用chinastates表查询

Ajax加载数据

1.这是chinastates表

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

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+jQuery实现省市区三级联动功能示例使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例

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

PHP 相关文章推荐
整理的9个实用的PHP库简介和下载
Nov 09 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php发送post请求函数分享
Mar 06 PHP
php url路由入门实例
Apr 23 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 #PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 #PHP
Laravel框架实现redis集群的方法分析
Sep 14 #PHP
ThinkPHP开发--使用七牛云储存
Sep 14 #PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
Sep 13 #PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 #PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 #PHP
You might like
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
2015/09/21 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
python实现弹跳小球
2019/05/13 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
python批量解压zip文件的方法
2019/08/20 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
机电一体化专业推荐信
2013/12/03 职场文书
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
大学军训感言1000字
2014/02/25 职场文书
安全承诺书范文
2014/03/26 职场文书
小学二年级学生评语
2014/04/21 职场文书
社区重阳节活动总结
2015/03/24 职场文书
六一活动主持词
2015/06/30 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
Python实现天气查询软件
2021/06/07 Python