1. 程式人生 > >最簡單的三級聯動

最簡單的三級聯動

最近研究了一下聯動原理,大多數聯動都是通過ajax實現的,其實就是通過ajax把頁面資料傳給後臺,在不重新整理頁面的情況下,改變下拉框的值。話不多說上程式碼講解:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>測試頁面</title>
<script type="text/javascript" src="jquery-3.3.1.min.js">
</script>
<script type="text/javascript">
	var sheng;
	function fun(){
		sheng=$("#sheng").val();
		$.get("sheng.php",{sheng:sheng},
		function (data){
			$("#shi").html(data);
		});
	}
	function fun2(){
		var shi=$("#shi").val();
		$.get("shi.php",{shi:shi,sheng:sheng},
		function (data){
			$("#qu").html(data);
		});
	}
</script>
</head>
<body>
	<select id="sheng" onchange="fun()">
		<option value="">請選擇省份</option>
		<option value="1">山東</option>
		<option value="2">河北</option>
	</select>
	<select id="shi" onchange="fun2()">
		<option>請選擇市</option>
	</select>
	<select id="qu">
		<option value="">請選擇區</option>
	</select>
</body>
</html>

這是HTML和jQuery的部分,為了讓大家明白,我現在講解一下jQuery的$.get()方法。
他有三個引數:
第一個引數是傳送請求的URL地址,在這裡也就是sheng.php和shi.php;
第二個引數是需要傳的值,要用{}包裹起來,格式為{變數名:變數},傳多個值{變數名1:變數值1,變數名2:變數值2};
第三個引數是需要呼叫的方法,其中括號裡的 data 不是傳參,而是返回值,是URL地址執行後返回來的值。(注:val()是jQuery中來獲取value的函式,html()是jQuery中用來獲取元素值的函式)

下面來看一下PHP程式碼

<?php
	//這裡是sheng.php
	$sheng=$_GET['sheng'];
	if($sheng=="1"){
		echo "<option>請選擇</option><option value='1'>淄博市</option><option value='2'>泰安市</option>";
	}
	if($sheng=="2"){
		echo "<option>請選擇</option><option value='1'>石家莊市</option><option value='2'>唐山市</option>";
	}

<?php
	//這裡是shi.php
	$sheng=$_GET['sheng'];
	$shi=$_GET['shi'];
	if($sheng=="1"){
		if($shi=="1"){
			echo "<option>請選擇</option><option value='1'>張店區</option><option value='2'>桓臺區</option>";
		}
		if($shi=="2"){
			echo "<option>請選擇</option><option value='1'>泰山區</option><option value='2'>岱嶽區</option>";
		}
	}
	if($sheng=="2"){
		if($shi=="1"){
			echo "<option>請選擇</option><option value='1'>長安區</option><option value='2'>橋東區</option>";
		}
		if($shi=="2"){
			echo "<option>請選擇</option><option value='1'>豐南區</option><option value='2'>豐潤區</option>";
		}
	}

因為用的是get()方法,所以是get接收。因為只是講解一下方法,所以在此我不在演示從資料庫中調取資料。值得注意的是,在PHP中只有echo出的資料,才會被jQuery中的get方法中的data所接收。

想要用post方法,只要把所有get替換即可正常執行。