jQuery ajax实现省市县三级联动


Posted in Javascript onMarch 07, 2021

本文我们用Jquery,ajax,做一个省,市,县的三级联动:

下面是我做三级联动下拉的步骤以及逻辑

第一步:先做一个省市区表格
第二步:建个PHP页面显示用我是在<body>里放<div>用来接收要显示的省市区表格信息,里面嵌入jquery-1.11.2.min.js和自己封装的三联动省市区的方法
第三步:写封装方法用JS
第四步:做个纯php处理页面,这个页面处理传过来的任何代号

首先我们要建立数据库:

jQuery ajax实现省市县三级联动

这就是包含省,市,县的数据库。

下面我们就写主页面:sanji.php:

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8" />
 <title>Document</title>
 <script src="jquery-1.11.2.min.js"></script>
 <script src="sanjiliandong.js"></script>
</head>
<body>
 <div id="sanjiliandong">
  <!--在这里使用三级联动插件-->
 </div>
</body>
</html>

然后就是js文件:

// JavaScript Document
$(document).ready(function(e){
 //向div里面仍三个下拉
  var str = "<select id='sheng'></select><select id='shi'></select><select id='qu'></select>";
 $("#sanjiliandong").html(str);//三个下拉显示
    
  
 //当省选中的话市也会跟着变去也会变。市和区都会加载一遍
 FillSheng();//省
 FillShi();//市
 FillQu();//区
 //给省加点击事件
 $("#sheng").change(function(){
   FillShi();//市
   FillQu();//区
  })
 //给市加点击事件
 $("#shi").change(function(){
   FillQu();//区
  })
});
//做三个方法分别为省市区
//填充省的方法,如何在表里查询 出省的代号例如:北京0001、天津0001,中国下面所有省都是0001开头的
function FillSheng()
{
 var pcode = "0001";
 $.ajax({
  async:false,
  url:"chuli.php",
  data:{pcode:pcode},
  type:"POST",
  dataType:"TEXT",
  success: function(data){
   //返回数据,根据行于行之间的分隔符来拆,拆完之后会返回一数组/行的数组
   var hang = data.split("|");
   
   var str = "<option value='' >请选择地区</option>";
   //把行的数组遍历下用for循环...length长度
   for(var i=0;i<hang.length;i++)
   {
    //把行的索引i在拆下.列与列的分隔符再拆
    var lie = hang[i].split("^");//这是列的数组
    str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>";
    
    $("#sheng").html(str);
   }
  }
 });
}
//填充市的方法
function FillShi()
{
 var pcode = $("#sheng").val();
 $.ajax({
  async:false,//****
  url:"chuli.php",
  data:{pcode:pcode},
  type:"POST",
  dataType:"TEXT",
  success: function(data){
   //返回数据,根据行于行之间的分隔符来拆,拆完之后会返回一数组/行的数组
   var hang = data.split("|");
   
   var str = "<option value='' >请选择城市</option>";
   //把行的数组遍历下用for循环...length长度
   for(var i=0;i<hang.length;i++)
   {
    //把行的索引i在拆下.列与列的分隔符再拆
    var lie = hang[i].split("^");//这是列的数组
    str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>";
   }
   $("#shi").html(str);
  }
 });
}
//填充区的方法
function FillQu()
{
 var pcode = $("#shi").val();
 $.ajax({
  async:false,
  url:"chuli.php",
  data:{pcode:pcode},
  type:"POST",
  dataType:"TEXT",
  success: function(data){
   //返回数据,根据行于行之间的分隔符来拆,拆完之后会返回一数组/行的数组
   var hang = data.split("|");
   
   var str = "<option value='' >请选择乡县</option>";
   //把行的数组遍历下用for循环...length长度
   for(var i=0;i<hang.length;i++)
   {
    //把行的索引i在拆下.列与列的分隔符再拆
    var lie = hang[i].split("^");//这是列的数组
    str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>";
    
    $("#qu").html(str);
   }
  }
 });
}

之后是查询数据库的处理文件:

<?php
 //处理页面只有一个功能处理传过来的所有代号(省、市、区。。。)
 include("DBDA.class.php");
 $db = new DBDA();
 $pcode = $_POST["pcode"];//取到赋值代号
 $sql = "select * from chinastates where parentareacode='{$pcode}'";
echo $db->StrQuery($sql);

显示效果如下:

jQuery ajax实现省市县三级联动jQuery ajax实现省市县三级联动

这就是我们要做的省,市,县的三级联动。在这里我们重点强调一下一定要做好逻辑关系,想好了在去动手写代码,要不然容易混乱,这样的话就只能从头开始。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现iframe动态调整高度的代码
Jan 06 Javascript
window.open以post方式将内容提交到新窗口
Dec 26 Javascript
简介JavaScript中toTimeString()方法的使用
Jun 12 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
Sep 01 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
javascript 中的继承实例详解
May 05 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
vue-cli如何引入bootstrap工具的方法
Oct 19 Javascript
如何重置vue打印变量的显示方式
Dec 06 Javascript
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
JS数组索引检测中的数据类型问题详解
Jan 11 Javascript
Javascript前端经典的面试题及答案
Mar 14 #Javascript
layer弹出层框架alert与msg详解
Mar 14 #Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 #Javascript
利用js定义一个导航条菜单
Mar 14 #Javascript
微信小程序 跳转传参数与传对象详解及实例代码
Mar 14 #Javascript
使用BootStrap实现标签切换原理解析
Mar 14 #Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
Mar 14 #Javascript
You might like
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
ArrayList类(增强版)
2007/04/04 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
Bootstrap项目实战之首页内容介绍(全)
2016/04/25 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Python异常处理总结
2014/08/15 Python
Python用threading实现多线程详解
2017/02/03 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Python序列类型的打包和解包实例
2019/12/21 Python
python要安装在哪个盘
2020/06/15 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
英国电气世界:Electrical World
2019/09/08 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
领导的自我鉴定
2013/12/28 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
2014年度思想工作总结
2014/11/27 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技