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

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

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

            其實很長時間我都是在用第三方庫,比如jquery ,prototype.js ,ext.js 關注過我blog的朋友不難發現我不喜歡造輪子,有現成的就用現成的。但是如今那些庫都變得很龐大。 雖然jquery 的庫,所提供的功能非常實用,基本也感覺沒啥冗余。 不過一般一個web 頁面基本都用不了,那么4、5000行的庫,有人就為了用個ajax 跑去使用ext 。。。。其實我們不妨把自己所需要的一些js 公共函數 封裝成比較獨立的腳本。這樣能省掉不少流量,況且 關于GPL 的開源協議,也能將部分用戶拒之門外的,必定這是一個商業社會。

        試看淘寶,網易,騰訊,搜狐…… 別人都有自己的腳本庫。我也想過在金山做那么一個腳本庫,連怎么把這么多腳本小庫,組織起來,怎么提供一個內部的腳本服務器,比如就像google 的,開發都按需申請加載 這些我都想好了。本人JavaScript 腳本也基本差不多達到了,然而,聽說是更有價值的事情等著我了……

    ajax.js:

    /**
     * @author  hechangmin@gmail.com
     * @brief   封裝 ajax 接口
     
    */ 
     
    var Ajax = 

        
    /**
         * @brief 創建XMLHTTP 對象
         
    */
        _creatXmlHttp : 
    function()
        {
            
            
    if(window.XMLHttpRequest) 
            { 
                
    return new XMLHttpRequest();
            }
            
    else if(window.ActiveXObject)   
            { 
                
    var aVersions = ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'];   
                
                
    for(var i=0; i<aVersions.length; i++)
                { 
                    
    try 
                    {
                        
    return new ActiveXObject(aVersions[i]);
                    }
    catch(e)
                    { 
                    }
                }   
            }
        },
        
        
    /**
         * @brief 發送請求,以及綁定回調函數
         * @param {Object} option [可選]
         * {
         *         [method],[async],url,data,[success],[encode],[error]
         * }
         
    */
        sendRequest : 
    function(_option)
        { 
            
    var xmlhttp = Ajax._creatXmlHttp();
            
    var option  = _option;
            
            
    if(!xmlhttp)
            { 
                alert(
    "Your browser against Ajax.");
                
    return false;
            }
            
            Ajax._CheckParam(option);
            
            xmlhttp.open(option.method, option.url, option.async);
            
            xmlhttp.setRequestHeader('Content
    -type','application/x-www-form-urlencoded; charset=+ option.encode);
            
            xmlhttp.onreadystatechange 
    = Ajax._BindCallBack(xmlhttp,option);
            
            xmlhttp.send(option.data 
    || null);
            
            
    return xmlhttp;
        },
        
        
    /**
         * @brief 綁定回調
         
    */
        _BindCallBack : 
    function(xmlhttp,option)
        { 
            
    return function()
            { 
                
    if (xmlhttp.readyState == 4
                { 
                    
    if (xmlhttp.status >= 200 && xmlhttp.status < 300 ) 
                    {
                        
    if(option.success != null)
                        {
                            option.success(xmlhttp.responseText);
                            
    delete xmlhttp;
                            xmlhttp 
    = null
                        }
                    }
    else
                    {
                        
    if(option.error  != null)
                        {
                            option.error(xmlhttp.responseText);
                            
    delete xmlhttp;
                            xmlhttp 
    = null;
                        }
                    } 
                }
            }
        },
        
        
    /**
         * @brief 參數校驗 補齊默認值
         * @param {Object} option
         
    */
        _CheckParam : 
    function(option)
        { 
             
            
    if(!option.method)
            { 
                option.method 
    = "post";
                
            }
    else if(option.method.toLowerCase() === "get")
            { 
                option.method 
    = "get";
            }
    else
            { 
                option.method 
    = "post";
            }
             
            
    if(option.async === window.undefined)
            { 
                option.async 
    = true;
            }
            
            
    if(!option.url)
            { 
                option.url 
    = window.location.href;
            }
            
            
    if(!option.encode)
            { 
                option.encode 
    = "UTF-8";    
            }
            
            
    if (option.method == 'get' && typeof(option.data) == 'string')
            {
                option.url 
    += (option.url.indexOf('?') == -1 ? '?' : '&') + "data=" + option.data;
                
                option.data 
    = null;
            }
            
            
    if(option.method == 'post')
            { 
                option.data 
    = "data=" + option.data;
            }
            
        }


    test.html

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
        
    <head>
            
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            
    <script type="text/javascript" src="public/js/ajax.js"></script>
            
    <script type="text/javascript" src="public/js/json2.js"></script>
        
    </head>
        
    <body>
            
    <div id="test1">aaaa</div>
            
    <script type="text/javascript" defer="true">
                
    var param = { 
                        method : 
    "get",
                        async  : 
    true,
                        url    : 
    "test.php",
                        data   : 
    "testtest",
                        success: 
    function(txt)
                        { 
                            alert(txt); 
                        },
                        
                        encode : 
    "UTF-8",
                        
                        onerror : 
    function(txt)
                        { 
                            alert(txt);
                        }
                        
                };
                
                
    var x = JSON.stringify(param);
                
                alert(x);
                
                alert(
    typeof x );
                
                
    var y = JSON.parse(x);
                
                alert(
    typeof y);
                
                
    for(var i in y)
                { 
                    alert(
    "y." + i + ":" + y[i]);
                }
                
                
    //alert(param);
                
                Ajax.sendRequest(param);
                
                
    var param1 = { 
                        url    : 
    "test.php",
                        async  : 
    false,
                        data   : 
    "aaaaa"                
                };
                
                
    var ret = Ajax.sendRequest(param1).responseText;
                
                alert(ret);
            
    </script>
        
    </body>
    </html>

    關于解析JSON 的部分:

     http://www.JSON.org/json2.js

     http://www.JSON.org/js.html


    posted on 2010-03-23 23:05 -274°C 閱讀(2563) 評論(0)  編輯  收藏 所屬分類: web前端

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914554
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 美女羞羞免费视频网站| 亚洲日韩av无码中文| 一级日本高清视频免费观看 | 天天干在线免费视频| 激情综合亚洲色婷婷五月| 一级毛片免费观看不卡的| 亚洲AV无码一区二区乱孑伦AS| 精品国产福利尤物免费| 亚洲中文字幕无码中文字在线 | 日韩成人免费视频| 亚洲AV日韩精品久久久久久久 | 亚洲一区二区三区免费观看| 亚洲午夜精品一区二区| 最近中文字幕国语免费完整| 亚洲色图视频在线观看| 97视频热人人精品免费| 国产成人不卡亚洲精品91| 亚洲区小说区图片区| 永久免费av无码入口国语片| 亚洲福利视频一区| 欧美大尺寸SUV免费| 亚洲aⅴ无码专区在线观看 | 四虎在线视频免费观看视频| 亚洲av无码片区一区二区三区| 四虎在线免费播放| 曰韩无码AV片免费播放不卡| 国产AV无码专区亚洲Av| 久草视频在线免费| 亚洲AV日韩AV永久无码色欲| 亚洲日韩VA无码中文字幕| 久久精品视频免费| 亚洲性无码一区二区三区| 亚洲无码视频在线| 免费黄色福利视频| 色屁屁www影院免费观看视频| 国产成人无码综合亚洲日韩| 无码国产精品一区二区免费 | 成人奭片免费观看| 国产免费MV大全视频网站| 亚洲国产精品午夜电影| 亚洲国产aⅴ综合网|