2011年12月1日 星期四

Javascript UrlEncode、UrlDecode、SetCookie、GetCookie、DelCookie 的函數

最近碰到 ASP.NET 要載入 ajax 頁面再帶回 ASP.NET 設定,先在 ASP.NET 頁面將必要資料用 Session 紀錄,等到讀取完成,ajax 讀取頁面再做一些計算,最後將計算結果,利用 Cookie 帶回原本頁面做顯示,其中,只讀取一次,也就是因為只讀取一次,所以 ajax 頁面帶回原本頁面就不能利用 session,因為它不會更新!

在實作過程中,碰到寫入 Cookie 字元的錯誤,因為我傳入的是一段 HTML 程式碼,所以很多符號都不能使用,在 ASP.NET 實作很簡單,使用 server.urlencode(string) 和 server.urldecode(string) 兩函式便可輕鬆解決;另一方面,ASP.NET 也很容易的讀取設定 cookie 內的值。

而在 Javascript 中就都要自己來了,所以我找了一下網路上的資源,程式碼和引用網址都貼在下面了,歡迎取用!


<script language="javascript"> 
    /*這裡開始 UrlEncode、UrlDecode 函數*/  
    function UrlEncode(str){  
        var ret="";  
        var strSpecial="!\"#$%&'()*+,/:;<=>?[]^`{|}~%";  
        var tt= ""; 
 
        for(var i=0;i<str.length;i++)
        {  
            var chr = str.charAt(i);  
            var c=str2asc(chr);  
            tt += chr+":"+c+"n";  
            if(parseInt("0x"+c) > 0x7f)
            {  
                ret+="%"+c.slice(0,2)+"%"+c.slice(-2);  
            }
            else
            {  
                if(chr==" ")  
                    ret+="+";  
                else if(strSpecial.indexOf(chr)!=-1)  
                    ret+="%"+c.toString(16);  
                else  
                    ret+=chr;  
            }  
        }  
        return ret;  
    }  
 
    function UrlDecode(str)
    {  
        var ret="";  
        for(var i=0;i<str.length;i++)
        {  
            var chr = str.charAt(i);  
            if(chr == "+")
            {  
                ret+=" ";  
            }
            else if(chr=="%")
            {  
                var asc = str.substring(i+1,i+3);  
                if(parseInt("0x"+asc)>0x7f)
                {  
                    ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6)));  
                    i+=5;  
                }
                else
                {  
                    ret+=asc2str(parseInt("0x"+asc));  
                    i+=2;  
                }  
            }
            else
            {  
                ret+= chr;  
            }  
        }  
        return ret;  
    } 
    function set_cookie(key, value, exp, path, domain, secure )
    {
        var cookie_string = key + "=" + escape ( value );
        if (exp)
        {
            cookie_string += "; expires=" + exp.toGMTString();
        }
        if (path)
            cookie_string += "; path=" + escape(path);
        if (domain)
            cookie_string += "; domain=" + escape(domain);
        if (secure)
            cookie_string += "; secure";
        document.cookie = cookie_string;
    }

    function get_cookie(cookie_name)
    {
        var results = 
            document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)');

        if (results)
            return (unescape(results[2]));
        else
            return null;
    }

    function delete_cookie(cookie_name)
    {
        var cookie_date = new Date(); //current date & time
        cookie_date.setTime(cookie_date.getTime() - 1);
        document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
    }
    </script>

引用:用JavaScript实现UrlEncode和UrlDecode
Javascript cookie操作函数set, get & delete


回目錄
回首頁


沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...