實現ajax三級聯動下拉式功能表的執行個體代碼

來源:互聯網
上載者:User
這篇文章介紹實現ajax三級聯動下拉式功能表的執行個體代碼

ajax寫三級聯動,先寫一個檔案類吧,以後用的時候直接調用即可;

來找一張表:

實現:

中國地區的三級聯動:省、市、區;

圖:

說一下思路:

(1)當使用者選擇省份的時候觸發事件,把當前的省份的id通過ajax發出請求傳遞到服務端的程式中

(2)比如取中國地區,中國是0001,那麼內建號為0001的便是中國地區;

北京的代號為11,那麼子代號為11的便是北京時的市區,

也就是說根據主代號查詢子代號;

(3)服務端根據用戶端的請求,查詢資料庫,並按照一定的格式返回給用戶端

顯示頁面非常簡單,只需要一個p,並引入js與jquery檔案即可:

<!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" />    <title>無標題文檔</title>    <script src="jquery-1.11.2.min.js"></script>    <script src="sanji.js"></script></head><body><h1>三級聯動</h1><p id="sanji"></p></body></html>

我需要三個下拉框select,並賦予id寫方法

先來寫三個下拉框附上id,並執行三個方法:


$(document).ready(function(e){    //三個下拉式清單    //載入顯示資料    $("#sanji").html("<select id='sheng'></select><select id='shi'></select><select id='qu'></select>");    //載入省份    FillSheng();    //載入市    FillShi();    //載入區    FillQu();}

接下來去寫方法;

三個菜單是聯動的,也就是根據省的不同可以有不同的選項

這裡就不要用click()點擊事件了;用改變狀態時執行的改變事件change()

(1)當省份發生變化的時候:


 //當省份發生變化    $("#sheng").change(function(){        FillShi();        FillQu();    })

市區,區縣發生改變

(2)當市區發生變化:


 //當市發生改變    $("#shi").change(function(){        FillQu();    })});

區縣發生變化;

這個邏輯沒毛病;

再來就是把省份的資訊載入粗來,並在寫完ajax的遍曆結束時,值寫入市的下拉式功能表:

//載入省份資訊function FillSheng(){    //根據父級代號    //取父級代號    var pcode = "0001";    //根據父級代號查資料    $.ajax({        async:false,        url:"cl.php",        data:{pcode:pcode},        type:"POST",        dataType:"JSON",        success:function(data){    var str = "";    for(var sj in data)    {        str = str+"<option value = '"+data[sj].AreaCode+"'>"+data[sj].AreaName+"</optiom>";    }    $("#sheng").html(str);}    });}//載入市function FillShi(){    //根據父級代號    //取父級代號    var pcode = $("#sheng").val();    //根據父級代號查資料    $.ajax({        async:false,        //取消非同步        url:"cl.php",        data:{pcode:pcode},        type:"POST",        dataType:"JSON",    success:function(data){    var str = "";    for(var sj in data)    {        str = str+"<option value = '"+data[sj].AreaCode+"'>"+data[sj].AreaName+"</optiom>";    }    $("#shi").html(str);}});}//載入區function FillQu(){    //根據父級代號    //取父級代號    var pcode = $("#shi").val();    //根據父級代號查資料    $.ajax({        url:"cl.php",        data:{pcode:pcode},    type:"POST",        dataType:"JSON",    success:function(data){    var str = "";    for(var sj in data)    {        str = str+"<option value = '"+data[sj].AreaCode+"'>"+data[sj].AreaName+"</optiom>";    }    $("#qu").html(str);}});}

這裡的格式用的是JSON 之前都是用"TEXT"

註:JSON

JSON是一種傳遞對象的文法,對象可以是name/value對,數組和其他對象

我們用到的是數組,那麼我們就需要遍曆數組,取到每一條資料,在js中遍曆數組用到的是

for(var sj in data)

{

}

來遍曆數組。格式!!!

這裡來寫上面說的那個檔案封裝類,找到我們以前我們的串連資料庫的類:

加上這段:

public function jsonQuery($sql,$type=1)    {        $db = new mysqli($this->host,$this->zhang,$this->mi,$this->dbname);        $r = $db->query($sql);        if($type == "1")        {            $arr = $r->fetch_all(MYSQLI_ASSOC);            return json_encode($arr);//去掉最後豎線        }        else        {            return $r;        }    }}


嗯,沒錯

處理頁面:

最後來說處理頁面:

<?php$pcode = $_POST["pcode"];include ("db.class.php");$db = new db();$sql = "select * from chinastates where ParentAreaCode = '{$pcode}'";echo $db->jsonQuery($sql);

連上資料庫,對象調用類,寫完sql語句直接返回就歐克!!!

就是這麼短!

相關文章:

用php實現城市地區三級聯動 附帶資料庫

js 實現省市區三級聯動菜單效果

Yii2實現中國省市區三級聯動執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.