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 相关文章推荐
JQuery中$.ajax()方法参数详解及应用
Dec 12 Javascript
Angular中的Promise对象($q介绍)
Mar 03 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
基于js实现checkbox批量选中操作
Nov 22 Javascript
JavaScript基于面向对象实现的猜拳游戏
Jan 03 Javascript
layui 实现table翻页滚动条位置保持不变的例子
Sep 05 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
Feb 10 Javascript
Element中Slider滑块的具体使用
Jul 29 Javascript
原生js实现自定义消息提示框
Nov 19 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
Vue实现圆环进度条的示例
Feb 06 Vue.js
JavaScript 实现页面滚动动画
Apr 24 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
一次编写,随处运行
2006/10/09 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
javascript eval函数深入认识
2009/02/21 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
在Python中移动目录结构的方法
2016/01/31 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
会议开场欢迎词
2014/01/15 职场文书
国际金融专业自荐信
2014/07/05 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
班级元旦晚会开幕词
2016/03/04 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers