AJAX+PHP实现三级联动

利用ajax实现页面地区选择三级联动 效果图如下

当选择相应省份时,对应显示出所有相关城市和地区的下拉选择

来看下如何实现的

html页面部分 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="../jquery-1.11.2.min.js"></script>
<script src="sanji.js"></script>
<title>无标题文档</title>
</head>

<body>
<h1>三级联动</h1>
<div id="sanji"></div>

</body>
</html>

 JS部分

 1 // JavaScript Document
 2 $(document).ready(function(e) {
 3     //找到ID=SANJI的DIV,造三个下拉扔进去
 4     $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>");
 5     
 6     //加载省的数据
 7     LoadSheng();
 8     //加载市的数据
 9     LoadShi();
10     //加载区的数据
11     LoadQu();
12     
13     //给省的下拉加点击事件
14     $("#sheng").click(function(){
15             //重新加载市
16             LoadShi();
17             //重新加载区
18             LoadQu();
19         })
20     //给市的下拉加点击事件
21     $("#shi").click(function(){
22             //重新加载区
23             LoadQu();
24         })
25     
26 });
27 //加载省份的方法
28 function LoadSheng()
29 {
30     //省的父级代号
31     var pcode = "0001";
32     $.ajax({
33         async:false,
34         url:"chuli.php",
35         data:{pcode:pcode},
36         type:"POST",
37         dataType:"TEXT",
38         success: function(data){
39             var hang = data.trim().split("|");
40             var str = "";
41             for(var i=0;i<hang.length;i++)
42             {
43                 var lie = hang[i].split("^");
44                 str = str+"<option value='"+lie[0]+"'>"+lie[1]+"</option>";
45             }
46             $("#sheng").html(str);
47         }
48     });
49 }
50 //加载市的方法
51 function LoadShi()
52 {
53     //找市的父级代号
54     var pcode = $("#sheng").val();
55     $.ajax({
56         async:false,
57         url:"chuli.php",
58         data:{pcode:pcode},
59         type:"POST",
60         dataType:"TEXT",
61         success: function(data){
62             var hang = data.trim().split("|");
63             var str = "";
64             for(var i=0;i<hang.length;i++)
65             {
66                 var lie = hang[i].split("^");
67                 str = str+"<option value='"+lie[0]+"'>"+lie[1]+"</option>";
68             }
69             $("#shi").html(str);
70         }
71     });
72 }
73 
74 //加载区的方法
75 function LoadQu()
76 {
77     //找区的父级代号
78     var pcode = $("#shi").val();
79     $.ajax({
80         url:"chuli.php",
81         data:{pcode:pcode},
82         type:"POST",
83         dataType:"TEXT",
84         success: function(data){
85             var hang = data.trim().split("|");
86             var str = "";
87             for(var i=0;i<hang.length;i++)
88             {
89                 var lie = hang[i].split("^");
90                 str = str+"<option value='"+lie[0]+"'>"+lie[1]+"</option>";
91             }
92             $("#qu").html(str);
93         }
94     });
95 }

php数据处理页面

 1 <?php
 2 require "../DataBase.class.php";
 3 $db= new  DateBase();
 4 $parentid=$_POST["pcode"];
 5 $sql="select * from chinastates where parentareacode='{$pcode}'";
 6 $arr=$db->query($sql);
 7 $str="";
 8 foreach ($arr as $v){
 9             $str.=implode("^",$v)."|";
10             
11     
12     }
13 $str=substr($str,0,strlen($str)-1);
14 echo $str;
15 
16 
17 ?>

 可以将三级联动的JS文件作为一个插件,当以后需要三级联动效果时可以引入

引入方法 就是上面的HTML代码样式,将js在头信息中引入(放在引入jQuery文件之后),然后在body中写个div用来存放这个三级联动

 

posted @ 2017-05-14 11:00  雾若晨曦  阅读(1142)  评论(0编辑  收藏  举报