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

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

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

    AJAX 愉快之旅—— prototype.js

     

    對于什么是 ajax 等初級問題,不在本文討論范圍,本文主要圍繞一個框架,以程序實例進行了詳細總結。由于本人水平所限,所以不完善的地方很多。大家可以跟帖提醒。

     

    以前用 jsp ,我用過 prototype.js ajax 框架,也用過 dwr 框架,還用過 buffalo 框架。但是現在項目使用 php 開發,我才再一次重新認識這位老朋友—— prototype.js 。我想說這個開源框架真是太棒了!

     

    (1)       取數據的時候顯示一個進度 loading

    Ajax . Responders . register 注冊后,在 ajax 發送 xmlhttp 時候,響應兩事件。 onCreate

    onComplete 非常棒。可以先寫好一個小小的 div 隱藏在那里,伺機而動, J

     

    var AjaxLog = {

           onCreate : function ()

               {

                  Ajax . activeRequestCount ++;

                  $ ( "Div_Ajax_Log" ). style . top = document . body . scrollTop + 230 ;

                  $ ( "Div_Ajax_Log" ). style . left = document . body . scrollLeft + document . body . clientWidth / 3 ;

                  $ ( "Div_Ajax_Log" ). style . display = "" ;

               },

           onComplete : function ()

               {

                    Ajax . activeRequestCount --;

                  $ ( "Div_Ajax_Log" ). style . display = "none" ;

               }

    };

    Ajax . Responders . register ( AjaxLog );

     

    Div_Ajax_Log DIV id . 其代碼:(當然還有一些 CSS 什么的就沒有帖出來了。)

     

     

    (2)       json 支持非常好

     

    function setLogDate ()

    {

        var count   =   getPram ();

        var url   =   "ajax.php" ;

        var kptl=

           {

               get_log_cmd:

               {

                  log_type:"file",

                  log_time_start:"1122",

                  log_time_end:"1122",

                  log_count_page:"30",

                  log_request_page:"1",

                  userSession :"hhh",

                  mode_id:"1001"

               }

           }

    // json 參數 轉化為字符串

        var parm  =  Object.toJSON(kptl);

    //  parm  =  "kptl = " + parm;

        try

        {

           var ajax   =   new Ajax . Request (

                                    url ,

                                    {

                                       method : "post" ,

                                       parameters : parm ,  

                                       encodeURI : 'UTF-8' ,

                                       encodeURIComponent : "UTF-8" ,

                                       onComplete : showReturn

                                    });

        }

        catch ( e )

        {

           alert ( " 創建 ajax 對象失敗 " );

        }

    }

    /*

      * @brief: 回調函數

      * @param: xmlhttp 對象

      */

    function showReturn ( obj )

    {

        try

        {

           var json   =   obj . responseText ;

           var mydata  =  json.evalJSON();

           createLogTab ( mydata );

        }

        catch ( e )

        {

           alert ( "Error:" + e . message );

        }

    }

    紅色字體將返回字符串轉換為 JSON

    這里返回的數據作為參數,調用 createLogTab ( mydata ); 由于我這里是返回一個數組。 web 頁面寫成一個 tablie 。所以有 createLogTab 函數。

    function createLogTab ( json )

    {

        var len = json . length ;

        var tbody = document . getElementById ( 'TBODY_log' );

        // 刪除原有數據

        var _tr = tbody . getElementsByTagName ( "tr" );

        while ( _tr . length != 0 )

        {

           // _tr [ 0 ]. parentNode 才能保證每次取到正確的子節點

           _tr [ 0 ]. parentNode . removeChild ( _tr [ 0 ]);

        }

        for ( i = 0 ; i < len ; i ++)

        {

           var td_0 = document . createElement ( 'td' );  

           var td_1 = document . createElement ( 'td' );

           var td_2 = document . createElement ( 'td' );

           var td_3 = document . createElement ( 'td' );

           var td_4 = document . createElement ( 'td' );

           var td_5 = document . createElement ( 'td' );

           td_0 . innerHTML = json [ i ][ "client_name" ];

           td_1 . innerHTML = json [ i ][ "client_ip" ];

           td_2 . innerHTML = json [ i ][ "file_name" ];

           td_3 . innerHTML = json [ i ][ "viruses_name" ];

           td_4 . innerHTML = json [ i ][ "infection_time" ];

           td_5 . innerHTML = json [ i ][ "clear_result" ];

          

           var tr = document . createElement ( 'tr' );

           tr . appendChild ( td_0 );

           tr . appendChild ( td_1 );

           tr . appendChild ( td_2 );

           tr . appendChild ( td_3 );

           tr . appendChild ( td_4 );

           tr . appendChild ( td_5 );

           tbody . appendChild ( tr );

           }

    }

    題外話,這個 DOM 編程部分曾犯了個經典錯誤。主要是 while 刪除子節點部分,當時用了 for 語句:

    for(k=0; k<_tr.length;k++)

    {

        alert("k:"+k);

        _tr[k].parentNode.removeChild(_tr[k]);

    }

    知道是什么錯誤嗎?呵呵,因為 _tr.length 在不停的變。每次刪一個就長度就少了(而 K 很快到達停止循環的條件)。所以最終都是刪不干凈的。

     

    (3) 替換整個節點控件

    <script>

        function getHTML()

        {

            var url = 'http://yourserver/app/getSomeHTML';

            var pars = 'someParameter=ABC';

            var myAjax = new Ajax.Updater('placeholder', url, {method: 'get', parameters: pars});

     

        }

    </script>

    <input type=button value=GetHtml onclick="getHTML()">

    <div id="placeholder"></div>

    這個非常好玩,眨眼間整體 DIV 都變了。我記得曾經犯了個錯,就是參數。這里參數別寫多了。

    有問題可以訪問官方網站:

    http://www.prototypejs.org/ 【下載一本手冊吧,呵呵】

     

    當然對本有新的想法或者疑問,歡迎留言交流。

     

    posted on 2007-08-24 09:53 -274°C 閱讀(838) 評論(2)  編輯  收藏 所屬分類: web前端


    FeedBack:
    # re: AJAX愉快之旅——prototype.js篇
    2007-08-26 17:27 | kafei
    不錯  回復  更多評論
      
    # re: AJAX愉快之旅——prototype.js篇[未登錄]
    2007-08-26 17:48 | -274°C
    @kafei

    :-) 謝謝夸獎。  回復  更多評論
      

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914715
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 无遮挡呻吟娇喘视频免费播放| 美女一级毛片免费观看| 黄瓜视频高清在线看免费下载| 亚洲欧美一区二区三区日产| 免费亚洲视频在线观看| 免费视频精品一区二区三区| 亚洲国产成人久久77| 亚洲av无码国产精品色在线看不卡| 青柠影视在线观看免费高清| 色在线亚洲视频www| 久久亚洲国产成人影院网站| 国产精品视频免费| 免费一级毛片一级毛片aa| 青柠影视在线观看免费高清| 亚洲GV天堂GV无码男同| 亚洲国产美国国产综合一区二区| 天天拍拍天天爽免费视频| 中文字幕看片在线a免费| 亚洲中文字幕乱码熟女在线| 亚洲阿v天堂在线| 日韩a在线观看免费观看| 亚洲GV天堂无码男同在线观看| 久久精品国产亚洲AV网站| 国产精品免费视频播放器| 精品免费久久久久久久| 久久www免费人成精品香蕉| 亚洲午夜在线播放| 亚洲成A∨人片在线观看不卡| 国产高清在线免费视频| 99re视频精品全部免费| 国产精品九九久久免费视频| 亚洲中文字幕久久精品蜜桃| 亚洲国产美国国产综合一区二区| 亚洲日韩精品无码专区网站| 岛国片在线免费观看| **一级一级毛片免费观看| a级毛片免费全部播放| 又粗又长又爽又长黄免费视频| 中文无码亚洲精品字幕| 亚洲精品视频免费看| 无码欧精品亚洲日韩一区|