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

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

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

    使用傳統(tǒng)AJAX技術(shù)的下拉框聯(lián)動(dòng)實(shí)現(xiàn)

    ??????在上一個(gè)項(xiàng)目中,需要實(shí)現(xiàn)下拉框聯(lián)動(dòng)的動(dòng)態(tài)實(shí)現(xiàn)時(shí),我使用的是在頁(yè)面中一次將所有聯(lián)動(dòng)數(shù)據(jù)裝載,然后再由js實(shí)現(xiàn)。具體如下:
      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())%> " ); // 產(chǎn)生數(shù)組
    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('請(qǐng)選擇學(xué)校','');
    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 >


    ??????頁(yè)面中的下拉框代碼:

    ???? < select? id? =bigsortselect"? name ="bigsortselect"
    ????????onChange
    ="changelocation(document.maxSearchForm.bigsortselect.options[document.maxSearchForm.bigsortselect.selectedIndex].value)"
    ????????size
    ="1" >
    ????????
    < option? value ="3" > 請(qǐng)選擇學(xué)校分類(lèi) </ option >
    ????????
    < option? value ="0" > 本科學(xué)校 </ option >
    ????????
    < option? value ="1" > 專(zhuān)科學(xué)校 </ option >
    ????????
    < option? value ="2" > 獨(dú)立學(xué)院 </ option >
    ????
    </ select >
    ????
    < select? name ="smallsortselect" ?id? =smallsortselect" >
    ????????
    < option? value ="0" ?selected > 請(qǐng)選擇學(xué)校 </ option >

    ????
    </ select >

    這種實(shí)現(xiàn)方式過(guò)去比較普遍,不過(guò)有了AJAX以后,我們可以大量精減我們的頁(yè)面代碼,同時(shí)配合taglib,可以完全消除以上實(shí)現(xiàn)方式頁(yè)面中的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('--請(qǐng)選擇用戶--','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">
    ????????????????????????????????????????????--請(qǐng)選擇用戶--
    ????????????????????????????????????????
    </option>
    ????????????????????????????????????
    </select>

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

    這里結(jié)合了自定義taglib,可以對(duì)比前后兩種下拉框聯(lián)動(dòng)的實(shí)現(xiàn)方式,可以發(fā)現(xiàn)第二種消滅了原來(lái)jsp中的java代碼,實(shí)現(xiàn)了我一直所追求的頁(yè)面和代碼解耦。

    ?????????那么,這個(gè)AJAX的使用,究竟是怎么一回事呢?其實(shí)道理非常簡(jiǎn)單,不用說(shuō)太多原理,通過(guò)代碼就可以體會(huì)。上面貼出來(lái)的js代碼,就是一個(gè)傳統(tǒng)的AJAX使用方式,通過(guò)建立與服務(wù)器的異步XML通信,取得數(shù)據(jù)后,對(duì)頁(yè)面中的下拉框進(jìn)行渲染。與這段代碼通信的是一個(gè)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");
    ????????
    //需要設(shè)置utf-8?在客戶端的javascript才可以正確識(shí)別
    ????????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>地級(jí)市管理員</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();
    ????}


    在這個(gè)servlet中,將得到的數(shù)據(jù)list,組裝成xml,返回給頁(yè)面,以此來(lái)實(shí)現(xiàn)動(dòng)態(tài)刷新下拉框的效果。
    posted on 2006-08-26 21:04 旱頭憨腦 閱讀(393) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): ajax

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品美女久久久久久久| 一本久到久久亚洲综合| 无码AV片在线观看免费| 亚洲精品黄色视频在线观看免费资源 | 亚洲精品成人片在线观看精品字幕 | 美女无遮挡免费视频网站| 国产成人精品久久亚洲高清不卡| 亚洲熟妇少妇任你躁在线观看| 亚洲中文字幕日本无线码| 久久亚洲国产成人影院| 亚洲va无码手机在线电影| 在线A亚洲老鸭窝天堂| 一本色道久久综合亚洲精品| 亚洲尤码不卡AV麻豆| 国产精品亚洲аv无码播放| 国产AV无码专区亚洲AVJULIA| 亚洲精品无码国产| 婷婷久久久亚洲欧洲日产国码AV | 国产免费69成人精品视频| 国产成人无码区免费A∨视频网站| 国产一级做a爱免费视频| 亚洲 综合 国产 欧洲 丝袜| 亚洲人成无码www久久久| 国产AV无码专区亚洲AV毛网站| 亚洲欧洲日产国产综合网| 亚洲w码欧洲s码免费| 亚洲精品国产摄像头| 香蕉视频免费在线播放| a级在线免费观看| 18女人水真多免费高清毛片| 最近中文字幕mv免费高清电影| 国产一卡二卡≡卡四卡免费乱码| 亚洲福利在线播放| 亚洲AV无码一区二区三区系列| 亚洲精品国产福利在线观看| 亚洲国产精品无码中文字| 亚洲黄色三级视频| 亚洲成人激情小说| 一个人免费观看视频在线中文| 久久99毛片免费观看不卡| 无码国产精品一区二区免费式直播 |