<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

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


    網站導航:
     
    主站蜘蛛池模板: 精品亚洲视频在线观看| 免费夜色污私人影院在线观看| 亚洲s色大片在线观看| 中国精品一级毛片免费播放| 国产亚洲精品无码拍拍拍色欲| 成年免费a级毛片| 亚洲日韩人妻第一页| 国产免费久久精品99久久| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 免费高清av一区二区三区| 国产亚洲精品成人AA片| 在线A级毛片无码免费真人| 亚洲午夜无码久久久久软件| 日本免费的一级v一片| 无码天堂亚洲国产AV| 亚洲午夜av影院| 久久精品视频免费播放| 亚洲熟妇av一区二区三区下载| 色se01短视频永久免费| WWW亚洲色大成网络.COM | 久久久久亚洲精品成人网小说| 久久国产精品萌白酱免费| 亚洲国产精品yw在线观看| 日韩视频免费一区二区三区| 一区二区三区免费电影| 亚洲av片劲爆在线观看| 免费A级毛片无码免费视| 另类专区另类专区亚洲| 亚洲午夜国产精品无码老牛影视 | 中文字幕免费在线观看| 亚洲jjzzjjzz在线播放| 一区二区三区亚洲视频| 免费看成人AA片无码视频吃奶| 亚洲精品国产福利片| 国产真实伦在线视频免费观看| 中文字幕无码免费久久9一区9| 亚洲老熟女@TubeumTV| 四虎影视精品永久免费网站| 免费在线黄色电影| 亚洲精品美女久久7777777| 中文字幕在亚洲第一在线|