使用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 相关文章推荐
PHP 选项及相关信息函数库
Dec 04 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
Dec 14 PHP
PHP在线书签系统分享
Jan 04 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
php实现留言板功能
Mar 05 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
CI框架(CodeIgniter)操作redis的方法详解
Jan 25 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 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
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP基于IMAP收取邮件的方法示例
2017/08/07 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
vue中axios的二次封装实例讲解
2019/10/14 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
用Python输出一个杨辉三角的例子
2014/06/13 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
python去除文件中重复的行实例
2018/06/29 Python
python实现淘宝秒杀脚本
2020/06/23 Python
python pandas模块基础学习详解
2019/07/03 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
小学生自我鉴定
2013/10/12 职场文书
体育教育专业自荐信范文
2013/12/20 职场文书
授权委托书(完整版)
2014/09/10 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
小学语文复习计划
2015/01/19 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers
Flink 侧流输出源码示例解析
2022/09/23 Servers