亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

ajax級聯菜單實現方法實例分析

2019-11-19 18:47:27
字體:
來源:轉載
供稿:網友

本文實例講述了ajax級聯菜單實現方法。分享給大家供大家參考,具體如下:

效果如下:

選擇第一項,第二項、第三項的內容跟著改變。
選擇第二項,第三項的內容跟著改變。
第三項則不影響第一項和第二項。

有幾點值得提:

1.html到底是前臺拼接還是后臺拼接。

我選擇的是前臺拼接,這樣可以節省流量,和后臺的資源。這也比較符合程序處理,一般后臺只負責提供數據。

通過json傳遞給前臺,完了前臺獲取進行處理。

ajax函數

function ajaxgetbigclass(val){  $.ajax({      type:"POST",      async:false,       url:"/default/index/ajax/do/ajaxgetbigclass",      data:"typeid="+val,      success:function(response){        if(response){          res = response;        }else{          res = false;        }      }    });  return res;}function ajaxgetsmallclass(val){  $.ajax({      type:"POST",      async:false,       url:"/default/index/ajax/do/ajaxgetsmallclass",      data:"bigclassid="+val,      success:function(response){        if(response){          res = response;        }else{          res = false;        }      }    });  return res;}

后臺ajax處理代碼

case 'ajaxgetbigclass': $typeid = trim($this->_getParam('typeid'));$daoNews = new dao_news();if(isset($typeid)){  $bigClass = $daoNews->getBigClassByType($typeid,true);  if($bigClass){    $json = json_encode($bigClass);    echo $json;  }else{    echo FALSE;  }}else{  echo FALSE;}break;case 'ajaxgetsmallclass': $bigclassid = trim($this->_getParam('bigclassid'));$daoNews = new dao_news();if(isset($bigclassid)){  $smallClass = $daoNews->getSmallClassByBigClass($bigclassid,true);  if($smallClass){    $json = json_encode($smallClass);    echo $json;  }else{    echo FALSE;  }}else{  echo FALSE;}break;

調用ajax函數,并拼接成html函數

function setbigclass(id,flag){    var flag = arguments[1] ? arguments[1] : false;//默認值    var res = ajaxgetbigclass(id);    //alert(res);    if(res){      myobj = eval(res);      for(var i=0;i<myobj.length;i++){           strHtml+="<option value='"+myobj[i].id+"'>"+myobj[i].name+"</option>";      }       $("#bigclassid").html(strHtml);    }else{      var strHtml = "<option value=''>無子選項</option>";      $("#bigclassid").html(strHtml);    }    if(flag&&res){      return myobj[0].id;    }}function setsmallclass(id){    var res = ajaxgetsmallclass(id);    //alert(res);    if(res){      myobj = eval(res);      var strHtml = "<option value=''>請選擇</option>";      for(var i=0;i<myobj.length;i++){           strHtml+="<option value='"+myobj[i].id+"'>"+myobj[i].name+"</option>";      }       $("#smallclassid").html(strHtml);    }else{      var strHtml = "<option value=''>請選擇</option><option value=''>無子選項</option>";      $("#smallclassid").html(strHtml);  }}

主函數,事件動作

$(function(){  //ajax級聯  $("#typeid").change(function(){    var id = $(this).val();    var res = setbigclass(id,true);    if(res){      setsmallclass(res);    }else{      setsmallclass(0);    }  });  $("#bigclassid").change(function(){    var id = $(this).val();    setsmallclass(id);  });});

2.后臺查詢函數化。

public function getType($where = false, $order = 'typeid ASC', $pagesize = false, $offset = false, $count = false, $from = false, $join = false, $group = false){    return $this->getData($this->_typename,$where,$order,$pagesize,$offset,$count,$from,$join,$group);}public function getTypeName($flag=false){    $where = array();    $aType = $this->getType($where);    if($aType){      if($flag){        foreach ($aType as $key => $value) {          $type[$key]['id'] = $value['typeid'];          $type[$key]['name'] = $value['typename'];        }        return $type;      }else{        foreach ($aType as $key => $value) {          $type[$value['typeid']] = $value['typename'];        }        return $type;      }    }else{      return false;    }}public function getBigClass($where = false, $order = 'BigClassID ASC', $pagesize = false, $offset = false, $count = false, $from = false, $join = false, $group = false){    return $this->getData($this->_bigname,$where,$order,$pagesize,$offset,$count,$from,$join,$group);}public function getBigClassByType($typeid = 60,$flag=false){    $where = array();    $where['BigClass.typeid =?'] = array("type"=>1,"val"=>$typeid);    //print_r($where);exit;    $from = array('BigClassID',"BigClassName","convert(text,BigClassMaster) as BigClassMaster","typeid");     $aBigClass = $this->getBigClass($where, false, false, false, false,$from);    if($aBigClass){      if($flag){        foreach ($aBigClass as $key => $value) {          $bigClass[$key]['id'] = $value['BigClassID'];          $bigClass[$key]['name'] = $value['BigClassName'];        }        return $bigClass;      }else{        foreach ($aBigClass as $key => $value) {          $bigClass[$value['BigClassID']] = $value['BigClassName'];        }        return $bigClass;      }    }else{      return false;    }}public function getSmallClass($where = false, $order = 'SmallClassID ASC', $pagesize = false, $offset = false, $count = false, $from = false, $join = false, $group = false){    return $this->getData($this->_smallname,$where,$order,$pagesize,$offset,$count,$from,$join,$group);}public function getSmallClassByBigClass($BigClassID = 221,$flag=false){    $where = array();    $where['SmallClass.BigClassID =?'] = array("type"=>1,"val"=>$BigClassID);    //print_r($where);exit;    $aSmallClass = $this->getSmallClass($where);    if($aSmallClass){      if($flag){        foreach ($aSmallClass as $key => $value) {          $smallClass[$key]['id'] = $value['SmallClassID'];          $smallClass[$key]['name'] = $value['smallclassname'];        }        return $smallClass;      }else{        foreach ($aSmallClass as $key => $value) {          $smallClass[$value['SmallClassID']] = $value['smallclassname'];        }        return $smallClass;      }    }else{      return false;    }}

這樣就可以多處使用,多種角度使用。

3.前臺js,文件化,同一個功能的js放在一個js文件中。內容最后也函數化。

<script type="text/javascript" src="/js/news/cascade.js"></script><tr><td width="20%" height="56" align="right" >請選擇分類:</td><td width="80%" style="padding:10px;"><select id="typeid" name="typeid" class=" ffb-input">    <!--{html_options options=$aType selected=$aData.typeid|default:'0'}--></select>><select id="bigclassid" name="bigclassid" class=" ffb-input">    <!--{html_options options=$aBigClass selected=$aData.bigclassid|default:'0'}--></select>><select id="smallclassid" name="smallclassid" class=" ffb-input">    <option value="">請選擇</option>    <!--{html_options class=" ffb-input" options=$aSmallClass selected=$aData.smallclassid|default:'0'}--></select></td></tr>

這樣會讓文件很清晰。

優化后的js

$(function(){  //ajax級聯  $("#typeid").change(function(){    var id = $(this).val();    setbigclass(id);  });  $("#bigclassid").change(function(){    var id = $(this).val();    setsmallclass(id);  });});function setbigclass(id){    var res = ajaxgetbigclass(id);    var strHtml;    if(res){      myobj = eval(res);      for(var i=0;i<myobj.length;i++){          strHtml+="<option value='"+myobj[i].id+"'>"+myobj[i].name+"</option>";      }       $("#bigclassid").html(strHtml);      $("#bigclassid").show().change();    }else{      $("#bigclassid").hide();      $("#smallclassid").hide();    }}function setsmallclass(id){    var res = ajaxgetsmallclass(id);    if(res){      myobj = eval(res);      var strHtml = "<option value=''>請選擇</option>";      for(var i=0;i<myobj.length;i++){           strHtml+="<option value='"+myobj[i].id+"'>"+myobj[i].name+"</option>";      }       $("#smallclassid").html(strHtml);      $("#smallclassid").show();    }else{      $("#smallclassid").hide();  }}function ajaxgetbigclass(val){  $.ajax({      type:"POST",      async:false,       url:"/default/index/ajax/do/ajaxgetbigclass",      data:"typeid="+val,      success:function(response){        if(response){          res = response;        }else{          res = false;        }      }    });  return res;}function ajaxgetsmallclass(val){  $.ajax({      type:"POST",      async:false,       url:"/default/index/ajax/do/ajaxgetsmallclass",      data:"bigclassid="+val,      success:function(response){        if(response){          res = response;        }else{          res = false;        }      }    });  return res;}

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript中ajax操作技巧總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产亚洲一区二区| 日韩美女毛茸茸| 成人av色在线观看| 国产一区二区日韩精品欧美精品| 久久久免费高清电视剧观看| 97视频在线观看视频免费视频| 欧美性受xxxx白人性爽| 亚洲第一福利视频| 国产免费一区二区三区在线观看| 久久久最新网址| 俺去亚洲欧洲欧美日韩| 国产999精品久久久| 久热在线中文字幕色999舞| 久久中文字幕在线| 国产精品综合网站| 午夜精品三级视频福利| 精品久久久久久久久久久久久久| 成人黄色大片在线免费观看| 久久久久国产精品www| 色狠狠av一区二区三区香蕉蜜桃| 欧美野外wwwxxx| 97超碰国产精品女人人人爽| 欧美性猛交xxxx黑人| 尤物yw午夜国产精品视频明星| 国产精品福利网站| 日韩欧美中文字幕在线播放| 亚洲成人免费在线视频| 欧美视频中文在线看| 欧美日韩国产一区中文午夜| 成人综合网网址| 亚洲国产成人久久综合一区| 91av在线网站| 国产欧美婷婷中文| 69视频在线免费观看| 欧美电影在线观看完整版| 在线精品国产欧美| 日韩欧美一区视频| 亚洲免费av电影| 国产精品2018| 日韩在线视频国产| 欧美激情a∨在线视频播放| 欧美大尺度电影在线观看| 欧美成人精品在线| 在线观看成人黄色| 亚洲欧美中文在线视频| 日韩av网站大全| 国产精品女主播| 亚洲最新av在线| 国产精品免费一区二区三区都可以| 91国内精品久久| 91wwwcom在线观看| 久久精品视频播放| 日韩av男人的天堂| 国产欧美久久久久久| 亚洲国产精品悠悠久久琪琪| 国产欧美一区二区三区在线| 色婷婷综合久久久久中文字幕1| 日韩欧美在线视频观看| 亚洲高清一区二| 亚洲欧美一区二区激情| 国产精品中文在线| 日韩中文字幕欧美| 国精产品一区一区三区有限在线| 5566日本婷婷色中文字幕97| 不卡av电影在线观看| 精品福利视频导航| 精品久久久视频| 亚洲大胆人体在线| 中文字幕日韩视频| 色妞一区二区三区| 538国产精品一区二区在线| 国产精品精品一区二区三区午夜版| 成人免费视频在线观看超级碰| 日韩美女在线播放| www国产精品com| 欧美色另类天堂2015| 精品国产拍在线观看| 国语自产精品视频在线看| 最近中文字幕2019免费| 欧美精品一区在线播放| 欧美黄色片视频| 日本视频久久久| 欧美日韩国内自拍| 国产精品美女免费看| 91精品视频一区| 欧美一区视频在线| 亚洲精品视频二区| 神马国产精品影院av| 亚洲**2019国产| 欧美老女人在线视频| 欧美日韩在线第一页| 一区二区日韩精品| 一本一道久久a久久精品逆3p| 国产专区精品视频| 欧美制服第一页| 92国产精品久久久久首页| 亚洲区免费影片| 美女国内精品自产拍在线播放| 日本成人免费在线| 日韩精品免费综合视频在线播放| 国产精品18久久久久久麻辣| 成人免费在线网址| 日韩精品高清在线观看| 国产一区二区三区精品久久久| 97热在线精品视频在线观看| 国产成人97精品免费看片| 亚洲白拍色综合图区| 亚洲激情国产精品| 综合国产在线观看| 欧美成人精品h版在线观看| 欧美激情极品视频| 亚洲黄一区二区| 永久免费毛片在线播放不卡| 久久九九精品99国产精品| 日韩精品在线电影| 青青在线视频一区二区三区| 日韩精品极品在线观看播放免费视频| 久久久精品欧美| 久久亚洲春色中文字幕| 亚洲激情 国产| 欧美一区第一页| 欧美午夜片在线免费观看| 亚洲人成欧美中文字幕| 国产精品入口免费视频一| 日本精品一区二区三区在线| 亚洲精品女av网站| 91精品国产自产91精品| 国产成人精品国内自产拍免费看| 色婷婷综合成人| 久久久免费精品| 久久99视频免费| 中文亚洲视频在线| 91美女片黄在线观看游戏| 亚洲第一中文字幕在线观看| 成人性生交大片免费观看嘿嘿视频| 亚洲区一区二区| 日韩av免费观影| 久久99亚洲热视| 91av在线视频观看| 欧美激情影音先锋| 一区二区亚洲精品国产| 日韩免费在线看| 久久91亚洲人成电影网站| 久久久久国产精品免费| 日韩欧美在线视频日韩欧美在线视频| 成人免费在线网址| 亚洲自拍中文字幕| 欧美精品九九久久| 欧美午夜视频一区二区| 久久久999精品| 久久精品国产91精品亚洲| 欧美人与性动交a欧美精品| 欧美一区二区三区四区在线| 国语自产精品视频在免费| 日韩精品福利在线| 欧美性视频网站| 欧美视频一区二区三区…| 日韩中文在线中文网在线观看| 不卡av电影院| 97人人模人人爽人人喊中文字| 亚洲人av在线影院| 亚洲欧洲在线视频| 日韩**中文字幕毛片| 欧美精品videosex性欧美|