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

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

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

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    今天早上老佟將昨天的練習(xí)進(jìn)行了講解。今天的主要內(nèi)容是對(duì)AJAX的匯總練習(xí),做了兩個(gè)練習(xí)都是比較常使用的應(yīng)用。

     

    一、              下拉框的級(jí)聯(lián),比如,選擇下拉框一中的內(nèi)容(城市名稱(chēng)),在下拉框二中顯示在這個(gè)城市中的部門(mén)。在下拉框二中選擇部門(mén)名稱(chēng),在下拉框三中顯示部門(mén)的人員。在下拉框中選擇人員名稱(chēng),在表格中顯示人員具體信息。這就是級(jí)聯(lián),數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。使用AJAX技術(shù)只更新當(dāng)前頁(yè)面部分內(nèi)容,無(wú)須刷新整個(gè)頁(yè)面。

    二、              用戶(hù)注冊(cè)功能,提示用戶(hù)名是否合法等。同樣也是使用AJAX技術(shù)。

     

    這兩個(gè)練習(xí)大家都比較常見(jiàn),WEB已經(jīng)這么流行了!Ok,接下來(lái)讓我們看看具體流程。我把這兩個(gè)圖畫(huà)一下。(只為AJAXStruts1的配合練習(xí))

     

    練習(xí)一:下拉框的級(jí)聯(lián)

    clip_image001

     

             以上沒(méi)有使用service層,那樣做會(huì)使程序更優(yōu)雅。但對(duì)于這個(gè)小練習(xí)沒(méi)有必要,甚至編寫(xiě)多個(gè)DAO也沒(méi)必要,老佟只編寫(xiě)了一個(gè)DAO。在這里我們麻煩一下自己吧!

     

             這里與頁(yè)面的交互數(shù)據(jù)是JSONJSON用在表單上十分方便。

     

    列出一部分程序的代碼,在頁(yè)面加載時(shí)。需要獲取城市列表,并將城市添加到下拉列表框中(對(duì)應(yīng)的項(xiàng)目value是城市的Id)。:

            

    var url="${pageContext.request.contextPath}/cascading.do?method=getAllCities";

        var args = {"time":new Date()};

        $("#city > option:not(:first)").remove();  

        // 嚴(yán)重注意JSON數(shù)據(jù)的格式,出一點(diǎn)差錯(cuò)都不可以,比如少了一個(gè)“:”。

        $.getJSON(url, args, function(data){

           if(data != null){

                //將所有的城市顯示到下拉列表框中

               for(var i=0; i < data.cities.length;i++){

                  var newOption = $("<option value='"+data.cities[i].id+"'>"+data.cities[i].name+"</option>");

                  newOption.appendTo($("#city"));

               }

           }

        });

     

             getJSON請(qǐng)求的處理的DispatchAction的方法:

    public ActionForward getAllCities(ActionMapping mapping, ActionForm form,

               HttpServletRequest request, HttpServletResponse response) throws Exception {

           //獲取所有城市

           CityDao cd = new CityDao();

           List list = cd.getAllCities();

           //將所有的城市包裝為一個(gè)JSON

           StringBuffer sb = new StringBuffer("{cities:[");

           for(int i=0; list!=null && i<list.size(); i++){

               JSONObject jsonObj = new JSONObject(list.get(i));

               sb.append(jsonObj.toString()).append(",");

           }

           //JSON數(shù)據(jù)添加結(jié)尾

           String result = null;

           if(list!=null && list.size()>0)

               result = sb.substring(0,sb.length()-1) + "]}";

           else

               result = sb.toString() + "]}";

           //向頁(yè)面發(fā)送數(shù)據(jù)

           response.setCharacterEncoding("UTF-8");

           response.setContentType("text/javascript");

           response.getWriter().print(result);

           return null;

        }

            

             數(shù)據(jù)庫(kù)操作部分,在這就不列舉了。因?yàn)橹暗娜罩局幸呀?jīng)有了!

     

    練習(xí)二:校驗(yàn)用戶(hù)注冊(cè)

     

     

    clip_image002

             與練習(xí)一相同,這里也沒(méi)有編寫(xiě)service層。

     

             我只將AJAX部分的javascript粘貼出來(lái):

    <script type="text/javascript" src="${pc}/scripts/jquery-1.3.1.js"></script>

    <script type="text/javascript" src="${pc}/scripts/jquery.blockUI.js"></script>

    <script type="text/javascript">

        // 頁(yè)面被加載完成后

        $(function(){

           // 用戶(hù)名合法性校驗(yàn)函數(shù)

           function doRegCheckout(username){

               var reg1 = /^\s*|\s*$/gi;

               username = username.replace(reg1,"");

               // 長(zhǎng)度全法性校驗(yàn)

               if(username.length < 6 ){

                  $(":text").val(username);

                  $("#message").html("<font color='red'>用戶(hù)名長(zhǎng)度至少為6個(gè)字符!</font>");

                  return false;

               }

               // 內(nèi)容合法性校驗(yàn)

               var reg2 = /^[a-zA-Z]\w+$/;

               if(!reg2.test(username)){

                  $("#message").html("<font color='red'>用戶(hù)名必須以字母開(kāi)始,可以包含數(shù)字和下劃線!</font>");

                  return false;

               }

               // 提交

               var url = "${pc}/reg.do";

               var args = {username:username, time:new Date()};

               // Action發(fā)出用戶(hù)是否存在的校驗(yàn)

               $.post(url,args,function(data){

                  $("#message").html(data);

               });

               return false;

           }

           // 當(dāng)用戶(hù)名文本框內(nèi)容被改變時(shí),進(jìn)行用戶(hù)名合法性校驗(yàn)!

           $(":text").change(function(){

               doRegCheckout($(this).val());

           });

           // 當(dāng)用戶(hù)名文本框內(nèi)容被改變時(shí),進(jìn)行用戶(hù)名合法性校驗(yàn)!

           $(":submit").click(function(){

               return doRegCheckout($(":text").val());

           });

        });

    </script>

     

             正則表達(dá)式很重要哦!程序員必備的七種武器之一!

     

             練習(xí)結(jié)尾,加油!


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 黄页免费视频播放在线播放| 久久这里只精品热免费99| 免费国产成人高清在线观看麻豆| 欧洲人免费视频网站在线| 日日摸夜夜添夜夜免费视频| 欧洲亚洲综合一区二区三区| 国产91在线|亚洲| 亚洲成av人影院| 又粗又硬免费毛片| 麻豆国产VA免费精品高清在线| 久久久久久国产a免费观看黄色大片 | 国产大片91精品免费看3| 无限动漫网在线观看免费| 100部毛片免费全部播放完整| 97在线视频免费公开观看| 人与禽交免费网站视频| 亚洲精品视频免费看| 国产啪精品视频网站免费尤物 | 成年丰满熟妇午夜免费视频| 国产美女在线精品免费观看| 在线观看特色大片免费视频| 成年网站免费视频A在线双飞| 国产麻豆视频免费观看| 皇色在线视频免费网站| 无码国产精品一区二区免费| 国产亚洲精品不卡在线| 91亚洲va在线天线va天堂va国产| 亚洲中文无码线在线观看| 亚洲视频无码高清在线| 黄页网址大全免费观看12网站| 无码AV动漫精品一区二区免费| 婷婷亚洲综合五月天小说在线| 久久国产一片免费观看| 4444www免费看| 亚洲一级Av无码毛片久久精品| 亚洲第一永久在线观看| 一级黄色毛片免费看| 美女被cao免费看在线看网站| 免费中文字幕一级毛片| 亚洲国产成a人v在线| 中文字幕无码日韩专区免费|