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 相关文章推荐
键盘 keycode的值 javascript时触发事件时很有用的要素
Nov 02 Javascript
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
用jQuery toggleClass 实现鼠标移上变色
May 14 Javascript
node.js中的emitter.on方法使用说明
Dec 10 Javascript
Angular.js回顾ng-app和ng-model使用技巧
Apr 26 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
JS数组返回去重后数据的方法解析
Jan 03 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
JS中跳出循环的示例代码
Sep 14 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 Javascript
jquery添加div实现消息聊天框
Feb 08 jQuery
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生成html分页列表的代码
2007/03/18 PHP
php定时执行任务设置详解
2015/02/06 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
如何构建 vue-ssr 项目的方法步骤
2020/08/04 Javascript
python解析xml模块封装代码
2014/02/07 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
python和php学习哪个更有发展
2020/06/17 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
创业计划书如何吸引他人眼球
2014/01/10 职场文书
经典商业广告词
2014/03/13 职场文书
工业设计专业自荐书
2014/06/05 职场文书
合作意向书
2014/07/30 职场文书
国庆节活动总结
2014/08/26 职场文书
小学教育见习报告
2014/10/31 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
关于flex 上下文中自动 margin的问题(完整例子)
2021/05/20 HTML / CSS
试了下Golang实现try catch的方法
2021/07/01 Golang
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python
Redis高可用集群redis-cluster详解
2022/03/20 Redis