jQuery結合PHP+MySQL實現二級聯動下拉選單[例項]
實現原理:根據省份值的變動,通過jQuery把sf_id傳給後臺php檔案處理,php通過查詢MySQl資料庫,得到對應的地市名,並返回JSON資料給前端處理,即實現聯動效果!
為便於講解,這裡直接給出省份:河南省(sf_id=1) 浙江省(sf_id=2),而地市和學生資訊則分別建立兩張資料表!編碼方式均為:utf8!新建資料庫並執行以下SQL語句!
/* 地市表 */
create TABLE IF NOT EXISTS `dishi`(
`ds_id` int(3) auto_increment not null primary key,
`sf_id` int(3) not null default `0`,
`ds_name` varchar(50) not null
);
/* 學生表 */
create TABLE IF NOT EXISTS `xuesheng`(
`xs_id` int(3) auto_increment not null primary key,
`ds_id` int(3) not null default `0`,
`xs_name` varchar(50) not null
);接著搭個前臺架子:
<table border=”0″ width=”100%”>
<tr>
<td width=100>省份</td>
<td>
<select name=”sf_id” id=”sf_id” title=”選擇省份”>
<option value=”1″>河南省</option>
<option value=”2″>浙江省</option>
</select>
</td>
</tr>
<tr>
<td>地市</td>
<td>
<select name=”ds_id” id=”ds_id” title=”選擇地市”>
</select>
</td>
</tr>
<tr>
<td>學生姓名</td>
<td><input type=text maxlength=20 name=”xs_name” value=””></td></tr>
</table>
接著就是jQuery部分,詳解可看程式碼後註釋部分:
<script language=”JavaScript”>
function getVal(){
$.getJSON(“select.php”,{sf_id:$(“#sf_id”).val()},function(json){
var ds_id = $(“#ds_id”);
$(“option”,ds_id).remove(); //清空原有的選項,也可使用 ds_id.empty();
$.each(json,function(index,array){
var option = “<option value=`”+array[`ds_id`]+”`>”+array[`ds_name`]+”</option>”;
ds_id.append(option);
});
});
}
//下面是頁面載入時自動執行一次getVal()函式
$().ready(function(){
getVal();
$(“#sf_id”).change(function(){//省份部分有變動時,執行getVal()函式
getVal();
});
});
</script>
其中的select.php就是關鍵部分了,此檔案接收前臺通過$.getJSON方法傳遞過來的引數 sf_id,然後select.php根據省份sf_id獲取對應的地市資料,再返回JSON資料,前臺通過jQuery將JSON資料進行處理,寫入<option>,即完成了聯動效果!
$sf_id = $_GET[“sf_id”];
if(isset($sf_id)){
$q=mysql_query(“select * from dishi where sf_id = $sf_id”);
while($row=mysql_fetch_array($q)){
$select[] = array(“ds_id”=>$row[`ds_id`],”ds_name”=>urlencode($row[`ds_name`]));
}
echo urldecode(json_encode($select));
}
其中的urlencode()、urldecode()函式為防止中文資料庫內容亂碼!這裡還需要注意的是,select.php不得再有其它資料返回,免得JSON返回錯誤!
最後補充一下,有童鞋問這效果在新增學生資訊的時候能方便使用,如果有傳遞過來的學生資訊需要編輯時,不能直接顯示要編輯的學生所處的地市!這裡就需要加個判斷了:
首先將上面的:<select name=”ds_id” id=”ds_id” title=”選擇地市”> </select>部分做個判斷
<select name=”ds_id” id=”ds_id” title=”選擇地市”>
<?php if( isset($_GET[`ds_id`]) ){//返回要編輯的學生所屬的地市
$sql=”SELECT * FROM dishi WHERE ds_id=”.$ds_id;
$resultds=mysql_query($sql,$conn);
while($listds=mysql_fetch_array($resultds)){ ?>
<option value=”<?php echo $listds[`ds_id`] ?>” <?php if( $listds[`ds_id`]==$ds_id ){ echo `selected=”selected”`; } ?> name=”ds_id”><?php echo $listds[`ds_name`] ?></option>
<?php } ?>
<?php } ?>
</select>
然後在頁面載入時,首次執行getVal()函式前做判斷,說明看註釋部分:
$().ready(function(){
//當$ds_id不為空,表示載入修改狀態的表單,此時就不能在頁面載入時立即呼叫getVal()函式,以避免無法顯示要修改的賬目所在的收支分類
<?php if( empty($ds_id) ){ ?>//當$ds_id為空,表示載入新增表單,此時要在頁面載入時立即呼叫getVal()函式,以顯示當前收支型別的子分類
getVal();
<?php } ?>
$(“#sf_id”).change(function(){
getVal();
});
});
好了,差不多結束吧!
本文轉自部落格園知識天地的部落格,原文連結:jQuery結合PHP+MySQL實現二級聯動下拉選單[例項],如需轉載請自行聯絡原博主。
相關文章
- jquery實現四級級聯下拉選單jQuery
- jQuery結合ul和li實現的下拉選單例項程式碼jQuery單例
- Android實現三級聯動下拉框 下拉選單spinner的例項程式碼Android
- jQuery 二級下拉選單jQuery
- jQuery + jQuery Mobile 實現省市二級下拉選單頁面jQuery
- jquery實現的點選二級下拉導航選單jQuery
- 純CSS實現的二級下拉選單效果程式碼例項CSS
- css二級下拉選單程式碼例項CSS
- select下拉選單二級聯動
- JS實現級聯下拉選單JS
- jQuery 省市級聯選單程式碼例項jQuery
- select下拉選單級聯效果例項程式碼
- select級聯下拉選單程式碼例項分析
- jQuery與CSS二級下拉選單jQueryCSS
- select下拉選單多級級聯效果程式碼例項
- jQuery 下拉選單選擇 載入 (練手例項)jQuery
- css實現的二級下拉選單效果CSS
- 淘寶頁面實現(包括級聯選單,下拉選單,框架)框架
- android 之 Spinner 下拉選單實現級聯Android
- jquery二級下拉導航選單詳解jQuery
- jQuery美化select下拉選單程式碼例項jQuery
- jQuery操作select下拉選單程式碼例項jQuery
- jq+php+mysql 實現二級選單聯動PHPMySql
- select下拉選單實現分類級聯效果
- jQuery 緩衝效果二級導航下拉選單jQuery
- jquery 實現層級下拉框聯動效果 程式碼jQuery
- 模擬實現select下拉選單例項程式碼單例
- Vue 資料雙向繫結實現二級下拉懸浮選單Vue
- CSS 二級下拉選單CSS
- CSS二級下拉選單CSS
- CSS3實現的美觀多級下拉選單效果程式碼例項CSSS3
- css三級下拉導航選單程式碼例項CSS
- js模擬實現select下拉選單程式碼例項JS
- C# MVC LayUI實現下拉框二級聯動C#MVCUI
- 滑鼠懸浮出現下拉選單程式碼例項
- 出生日期三級聯動下拉選單
- js省市級聯選單程式碼例項JS
- 純CSS二級下拉導航選單實CSS