JQ+AJAX实现多级联动

利用JQ与AJAX实现三级联动实现的效果:

当前两级改变时,后边一级或两级都会改变:

使用的数据库:

html代码:

<!doctype html>
<html lang="en">
	<head>
		<meta charset="UTF-8" />
		<title>Document</title>
		<script src="jquery-1.11.2.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<select  id="yiji"   >

		</select>
		<select  id="erji"   >

		</select>
		<select  id="sanji"  >

		</select>

	</body>
        </html>

  

简而言之,做三个空的下拉列表,引入jq包。

逻辑上封装三个函数,分别是加载第一级,第二级和第三极的下拉列表,然后当第一级改变时,第二级改变;第二级改变时,第三极改变:

$(document).ready(function(e) {

		yiji();                           //第一级函数
		erji();                          //第二级函数
		sanji();                         //第三极函数
		$("#yiji").change(function(){
			erji();               sanji();
		})
		$("#erji").change(function(){
			sanji();
		})
	});

  

然后是三个函数的封装方法:

function yiji(){
			$.ajax({
				async:false,
				url:"yiji.php",
				dataType:"TEXT",
				success:function(r){
					var lie = r.split("|");
					var str = "";
					for(var i=0;i<lie.length;i++)
					{

						str +=" <option value=‘"+lie[i]+"‘ >"+lie[i]+"</option> ";
					}

					$("#yiji").html(str);	

				}
			});
		}
		//二级
			function erji(){
				var val = $("#yiji").val();
			$.ajax({
				async:false,
				url:"erji.php",
				dataType:"TEXT",
				data:{e:val},
				type:"POST",
				success:function(r){
					var lie = r.split("|");
					var str = "";
					for(var i=0;i<lie.length;i++)
					{

						str +=" <option value=‘"+lie[i]+"‘>"+lie[i]+"</option> ";
					}
					$("#erji").html(str);

					}

				});
			}

			//三级
			function sanji(){

				var val = $("#erji").val();
				if(val!=="")                   //有些特别行政区没有下一区县,例如香港
				{
					$.ajax({
				url:"sanji.php",
				dataType:"TEXT",
				data:{e:val},
				type:"POST",
				success:function(r){

					var lie = r.split("|");
					var str = "";
					for(var i=0;i<lie.length;i++)
					{

						str +=" <option value=‘"+lie[i]+"‘>"+lie[i]+"</option> ";
					}
					$("#sanji").html(str);

					}

				});
				}
				else{
					$("#sanji").empty();
				}
			}

  

通过三个函数的处理界面,通过数据库访问将数据串接为字符串回转。

首先引入类文件:

DBDAA.class.php:

<?php
class DBDA {
	public $host = "localhost";
	public $uid = "root";
	public $pwd = "";
	public $dbname = "12345";

	//成员方法
	public function Query($sql, $type = 1) {
		$db = new MySQLi($this -> host, $this -> uid, $this -> pwd, $this -> dbname);
		$r = $db -> query($sql);

		if ($type == 1) {
			return $r -> fetch_all();
		} else {
			return $r;
		}
	}

	//返回字符串的方法
	public function StrQuery($sql, $type = 1) {
		$db = new MySQLi($this -> host, $this -> uid, $this -> pwd, $this -> dbname);
		$r = $db -> query($sql);

		if ($type == 1) {
			$attr = $r -> fetch_all();
			$str = "";
			foreach ($attr as $v) {
				$str .= implode("^", $v) . "|";
			}

			return substr($str, 0, strlen($str) - 1);

		} else {
			return $r;
		}
	}

}

  

一级处理文件,yiji.php:

<?php
include("DBDAA.class.php");
$db = new DBDA();
$sql = " select areaname from chinastates where areacode  REGEXP  ‘^[[:digit:]]{2}$‘ ";
echo $db->StrQuery($sql);
?>

 

二级处理文件,erji.php:

<?php
include("DBDAA.class.php");
$db = new DBDA();
$e = $_POST["e"];
$sqll = " select areacode from chinastates where areaname = ‘{$e}‘";
$atter = $db->Query($sqll);
$sql = " select areaname from chinastates where areacode  REGEXP  ‘^{$atter[0][0]}[[:digit:]]{2}$‘ ";
echo $db->StrQuery($sql);
?>

  

三级处理文件,sanji.php:

<?php
include("DBDAA.class.php");
$db = new DBDA();
$e = $_POST["e"];
$sqll = " select areacode from chinastates where areaname = ‘{$e}‘";
$atter = $db->Query($sqll);
$sql = " select areaname from chinastates where areacode  REGEXP  ‘^{$atter[0][0]}[[:digit:]]{2}$‘ ";
echo $db->StrQuery($sql);
?>

  

时间: 2025-01-15 19:33:24

JQ+AJAX实现多级联动的相关文章

[ PHP+jQuery ] ajax 多级联动菜单的应用:电商网站的用户地址选择功能 ( 一 ) - 传统下拉菜单

/** jQuery version: 1.8.3 Author: 小dee Date: 2014.11.5 */ 说明:分析其他网站的图片较多,可以在目录跳过直接看本文 demo . 目录: 其他网站分析 亚马逊 淘宝 京东 当当 本文案例 demo1 demo2 [ 后面的博文再写 ] demo3 [ 后面的博文再写 ] 惯例,先看看他山之石,选择了四家比较大的电商网站:亚马逊.淘宝.京东.当当,看看它们的地址联动菜单是怎么做的. 1. 亚马逊[返回目录][下一节:淘宝] 图1 默认界面 说

jQuery cxSelect 多级联动下拉菜单

随着电商热门,这种多层次的互动更充分地体现在下拉菜单,最明显的是多级联动地址下拉选择,因此,这里是一个简单的分享 jQuery cxSelect 多级联动下拉菜单 cxSelect 它是基于 jQuery 多级联动菜单插件.它适用于各省.动菜单. 列表数据通过 AJAX 获取(须要在server环境执行),也能够使用变量自己定义,数据内容使用 JSON 格式. 提供国内省市县数据(数据来源:basecss/cityData Date: 2014.03.31) 个人一直都有习惯,当有新知识点须要学

jquery实现select多级联动

之前在angular的时候实现多级联动很方便,只需监听某个变量的变化然后执行函数就行,昨天自己写了个联动: var getOptions = function(param, domId){ $.ajax({ url:"/admin/ucm/queryResource?areaCode="+param, type:'get', success:function(res){ var data = res.bizData.lists; $("#"+domId + &quo

PHP多级联动的学习

_______________________________________________2015/9/24____________________________________________________________________ 今天开始学习多级联动,首先我开始看了dede的联动类别管理前后台的代码以及他的数据库,有点复杂.但是感觉和以前写的无限级分类有相似的地方,都是根据某个字段寻找前一个或者后一个内容.我尝试在ThinkCMF中实现多级联动,于是把dede关于这一块基本的

jQuery制作简洁的多级联动Select下拉框

今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多.另外,这个Select下拉框也可以绑定下拉事件,并获取当前选中项的值. html代码: <div class="wrap">        <div class="nice-select" name="nice-select">   

原生Ajax 和Jq Ajax

前言:这次介绍的是利用ajax与后台进行数据交换的小例子,所以demo必须通过服务器来打开.服务器环境非常好搭建,从网上下载wamp或xampp,一步步安装就ok,然后再把写好的页面放在服务器中指定的位置.打开时,在浏览器地址栏输入"localhost/指定页面"或者"127.0.0.1/指定页面"打开. 下面列出demo的HTML.PHP.原生ajax .jq ajax代码. HTML代码: <!doctype html> <html> &

vue在多级联动时,一些情况不用watch而用onchange会更好

onchange事件在内容改变且失去焦点时触发,因此在一些多级联动需要清空次级内容的时候,用onchange就非常有用了,尤其是浏览器会提前加载数据的情况下.有篇文章可以看一下,链接. PS:路漫漫其修远兮,最近遇到的几个问题,孟哥都是很快给出了解决方案...吾辈仍需努力.

PHP ajax 实现三级联动

在一个单独JS页面中,利用ajax实现三级联动,做成一个三级联动形式,以便于以后随时调用 JS代码: 1 $(document).ready(function(e) { 2 $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>"); 3 4 //填充内容

AJAX省市区三级联动下拉列表实现 JAVA开发

转载自:http://blog.sina.com.cn/s/blog_a48af8c001011lx1.html 例子--District Picker            http://fengyuanchen.github.io/distpicker/ 此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表: 代码如下: 建立数据库中的代码和一些配置文件信息就省略了,主要有JavaScript中的代码为: $(document).ready(function(){