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 相关文章推荐
短信提示使用 特效
Jan 19 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
Sep 14 Javascript
JS打印gridview实现原理及代码
Feb 05 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
jQuery 关于伪类选择符的使用说明
Apr 24 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
基于jquery实现表格无刷新分页
Jan 07 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
Vue应用部署到服务器的正确方式
Jul 15 Javascript
JS实现二维数组横纵列转置的方法
Apr 17 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
小程序实现录音上传功能
Nov 22 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 购物车的例子
2009/05/04 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
zen_cart实现支付前生成订单的方法
2016/05/06 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
浅谈jQuery.easyui的datebox格式化时间
2015/06/25 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
python缩进长度是否统一
2020/08/02 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
Java基础知识面试题
2014/03/25 面试题
双十佳事迹材料
2014/01/29 职场文书
统计系教授推荐信
2014/02/28 职场文书
贷款委托书范本
2014/04/08 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
不同意离婚答辩状
2015/05/22 职场文书
幸福来敲门观后感
2015/06/04 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
Django框架中模型的用法
2022/06/10 Python