<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    使用傳統AJAX技術的下拉框聯動實現

    ??????在上一個項目中,需要實現下拉框聯動的動態實現時,我使用的是在頁面中一次將所有聯動數據裝載,然后再由js實現。具體如下:
      js代碼:

    ?1 < script?language = " JavaScript " >
    ?2 var ?onecount;
    ?3 onecount = 0 ;
    ?4 subcat = new ?Array();
    ?5 ? <%
    ?6 ? int ?count = 0 ;
    ?7 ?Iterator?itr? = ?schoolList.iterator();
    ?8 while (itr.hasNext())
    ?9 {
    10 MaxSchoolView?msv? = (MaxSchoolView)?itr.next();
    11 %>
    12 subcat[ <%= count %> ] = new ?Array( " <%=msv.getSchoolName()%> " , " <%=Integer.parseInt(msv.getSchoolClass())%> " , " <%=Integer.parseInt(msv.getSchoolNO())%> " ); // 產生數組
    13 <%
    14 ???????count = count + 1 ;
    15 }

    16 %>
    17 onecount =<%= count %> ;
    18 ?
    19 function ?changelocation(id)
    20 ??? {
    21 ???document.maxSearchForm.smallsortselect.length = 0 ;
    22 ??????
    23 ??? var ?idto = id;
    24 ??? var ?i;
    25 ???document.maxSearchForm.smallsortselect.options[ 0 ] = new ?Option('請選擇學校','');
    26 ??? for (i = 0 ;i < onecount;i ++ )
    27 ??????? {
    28 ??????????? if (subcat[i][ 1 ] == idto)
    29 ??????????? {
    30 ???????????????document.maxSearchForm.smallsortselect.options[document.maxSearchForm.smallsortselect.length] = new ?Option(subcat[i][ 0 ],subcat[i][ 2 ]);
    31 ???????????}
    ???????
    32 ???????}

    33
    34 ??
    35 ???????
    36 ???}
    ?????
    37 ???
    38 </ script >


    ??????頁面中的下拉框代碼:

    ???? < select? id? =bigsortselect"? name ="bigsortselect"
    ????????onChange
    ="changelocation(document.maxSearchForm.bigsortselect.options[document.maxSearchForm.bigsortselect.selectedIndex].value)"
    ????????size
    ="1" >
    ????????
    < option? value ="3" > 請選擇學校分類 </ option >
    ????????
    < option? value ="0" > 本科學校 </ option >
    ????????
    < option? value ="1" > 專科學校 </ option >
    ????????
    < option? value ="2" > 獨立學院 </ option >
    ????
    </ select >
    ????
    < select? name ="smallsortselect" ?id? =smallsortselect" >
    ????????
    < option? value ="0" ?selected > 請選擇學校 </ option >

    ????
    </ select >

    這種實現方式過去比較普遍,不過有了AJAX以后,我們可以大量精減我們的頁面代碼,同時配合taglib,可以完全消除以上實現方式頁面中的java代碼。

    如下:
      
    <script?type="text/javascript">???????
    function?getResult(stateVal)?{
      ?
    var?url?=?"select?type=login&regionNO="+stateVal;?
      ?
    if?(window.XMLHttpRequest)?{?
      ?req?
    =?new?XMLHttpRequest();?
      ?}
    else?if?(window.ActiveXObject)?{?
      ?req?
    =?new?ActiveXObject("Microsoft.XMLHTTP");?
      ?}
    ?
      ?
    if(req){?
      ?req.open(
    "GET",url,?true);?
      ?req.onreadystatechange?
    =?complete;?
      ?req.send(
    null);?
      ?}
    ?
    }
    ?
    function?complete(){
    ?
    if?(req.readyState?==?4)?{?
      ?
    if?(req.status?==?200)?{?
    ????????????
    var?xmlDoc=req.responseXML.documentElement;
    ????????????
    var?xSel=xmlDoc.getElementsByTagName('select');
    ????????????
    var?select_root=document.getElementById('schoolNO');
    ????????????select_root.options.length
    =0;
    ????????????
    var?option=new?Option('--請選擇用戶--','0');
    ????????????select_root.add(option);
    ????????????
    for(var?i=0;i<xSel.length;i++)
    ????????????
    {
    ????????????????
    var?xValue=xSel[i].childNodes[0].firstChild.nodeValue;
    ????????????????
    var?xText=xSel[i].childNodes[1].firstChild.nodeValue;
    ????????????????
    var?option=new?Option(xText,xValue);
    ????????????????
    try{
    ????????????????????select_root.add(option);
    ????????????????}
    catch(e){
    ????????????????}

    ????????????}

    ????????????}

    ????????????}

    }

    </script>

    下拉框代碼:

    ????????????????????????????<TR>
    ????????????????????????????????
    <TD>
    ????????????????????????????????????
    <label?for="name">
    ????????????????????????????????????????用戶:
    &nbsp;
    ????????????????????????????????????
    </label>
    ????????????????????????????????????
    <twy:sportsitem?regionNO="topAdmin"?/>

    ????????????????????????????????
    </TD>
    ????????????????????????????
    </TR>
    ????????????????????????????
    <TR>
    ????????????????????????????????
    <TD>
    ????????????????????????????????????
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    ????????????????????????????????????
    <select?id="schoolNO"?name="schoolNO">
    ????????????????????????????????????????
    <option?value="0">
    ????????????????????????????????????????????--請選擇用戶--
    ????????????????????????????????????????
    </option>
    ????????????????????????????????????
    </select>

    ????????????????????????????????
    </TD>
    ????????????????????????????
    </TR>

    這里結合了自定義taglib,可以對比前后兩種下拉框聯動的實現方式,可以發現第二種消滅了原來jsp中的java代碼,實現了我一直所追求的頁面和代碼解耦。

    ?????????那么,這個AJAX的使用,究竟是怎么一回事呢?其實道理非常簡單,不用說太多原理,通過代碼就可以體會。上面貼出來的js代碼,就是一個傳統的AJAX使用方式,通過建立與服務器的異步XML通信,取得數據后,對頁面中的下拉框進行渲染。與這段代碼通信的是一個servlet,代碼如下:

    import?java.io.IOException;
    import?java.io.PrintWriter;
    import?java.util.List;

    import?javax.servlet.ServletException;
    import?javax.servlet.http.HttpServlet;
    import?javax.servlet.http.HttpServletRequest;
    import?javax.servlet.http.HttpServletResponse;

    import?org.springframework.web.context.support.WebApplicationContextUtils;
    import?org.twy.dao.SchoolDAO;
    import?org.twy.dao.ibatis.helper.SchoolQueryHelperBean;
    import?org.twy.model.School;
    import?org.twy.sys.Constants;
    import?org.twy.utils.StringUtils;


    /**
    ?*?
    ?*?
    @author?lanluquan
    ?*
    ?
    */

    @SuppressWarnings(
    "serial")
    public?class?SelectSchoolServlet?extends?HttpServlet?{

    ????
    public?SelectSchoolServlet()?{
    ????????
    super();
    ????}


    ????
    public?void?destroy()?{
    ????????
    super.destroy();
    ????}


    ????
    public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
    ????????????
    throws?ServletException,?IOException?{
    ????????response.setContentType(
    "text/xml");
    ????????response.setHeader(
    "Cache-Control",?"no-cache");
    ????????
    //需要設置utf-8?在客戶端的javascript才可以正確識別
    ????????response.setCharacterEncoding("utf-8");
    ????????String?regionNO?
    =?request.getParameter("regionNO");
    ????????String?type?
    =?request.getParameter("type");

    ????????SchoolDAO?sdao?
    =?(SchoolDAO)?WebApplicationContextUtils
    ????????????????.getRequiredWebApplicationContext(getServletContext()).getBean(
    ????????????????????????
    "schoolDAO");

    ????????SchoolQueryHelperBean?sqhb?
    =?new?SchoolQueryHelperBean(null,
    ????????????????StringUtils.strTOLong(regionNO),?
    null,?null,?null);
    ????????List?schools?
    =?sdao.getSchools(sqhb,?0,?Constants.MAXNUM);

    ????????StringBuffer?sb?
    =?new?StringBuffer("<selects>");
    ????????
    if(type!=null?&&?type.equals("login")){
    ????????????sb.append(
    "<select><value>1</value><text>地級市管理員</text></select>");
    ????????}

    ????????School?s?
    =?null;
    ????????
    for?(Object?o?:?schools)?{
    ????????????s?
    =?(School)?o;
    ????????????sb.append(
    "<select><value>"+s.getSchoolNO()+"</value><text>"+s.getSchoolName()+"</text></select>");
    ????????}

    ????????
    ????????sb.append(
    "</selects>");
    ????????
    //String?xml?=?sb.toString();
    ????????
    //new?String(xml.getBytes("GBK"),?"UTF-8");//ISO-8859-1
    ????????
    //System.out.println(sb);
    ????????PrintWriter?out?=?response.getWriter();
    ????????out.write(sb.toString());
    ????????out.close();
    ????}


    在這個servlet中,將得到的數據list,組裝成xml,返回給頁面,以此來實現動態刷新下拉框的效果。
    posted on 2006-08-26 21:04 旱頭憨腦 閱讀(395) 評論(0)  編輯  收藏 所屬分類: ajax

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久久久亚洲精品美女| 亚洲AⅤ视频一区二区三区| 亚洲三级电影网站| 精品一区二区三区免费| 亚洲AV无码精品色午夜果冻不卡 | 中文在线观看永久免费| 亚洲精品乱码久久久久久按摩| 色播在线永久免费视频网站| 国产亚洲3p无码一区二区| 免费国产成人α片| 亚洲人成网站影音先锋播放| 四虎在线最新永久免费| 美女视频黄免费亚洲| 国产精品免费视频一区| 七次郎成人免费线路视频| 中文亚洲AV片不卡在线观看| 久久免费国产精品一区二区| 亚洲视频在线免费看| 女人张腿给男人桶视频免费版| 亚洲sm另类一区二区三区| 亚洲人妻av伦理| 人妻免费一区二区三区最新| 久久亚洲AV成人无码软件| 毛片网站免费在线观看| 免费激情网站国产高清第一页| 亚洲精品二区国产综合野狼| 麻豆视频免费观看| 亚洲av日韩av永久无码电影| 中文字幕亚洲无线码| 91精品成人免费国产片| 国产亚洲精品AAAA片APP| 亚洲精品无码高潮喷水在线| 亚洲免费网站在线观看| 大桥未久亚洲无av码在线| 亚洲美女又黄又爽在线观看| 大地资源在线观看免费高清| 一级女人18片毛片免费视频| 亚洲精品国产电影午夜| 四虎永久成人免费影院域名| 久久免费线看线看| 精品国产亚洲一区二区三区在线观看 |