狀態保持以及AJAX的初步學習


                   嘿嘿,今天學習的有點迷茫哦,主要學習把驗證碼使用在登錄頁面時間的一些邏輯,學習這個時間並沒有那么的迷惑哦,可是自己寫程序時間倒是有點反應遲鈍,不過還好總是在最后搞清楚啦,另外就是一步一步的學習是接近項目期,今天下午學習了ajax,這個使用javascript寫起來還是蠻麻煩的,嘿嘿,但是使用jquery實現是非常的簡單的,不知道是不是由於我剛接觸的原因,下面來總結一下今天學習的內容,感覺今天學習的還是很有必要詳細總結的,因為在以后的項目中還是經常會使用的。

          一.狀態保持

          1.cookie的添加與刪除

//HttpCookie cookie = new HttpCookie("cookietext", context); //創建cookie,它是鍵值對的形式存在
                        //cookie.Expires = DateTime.Now.AddDays(7);          //給他一個時間7天,可以是7小時或者7分鍾
                        //Response.Cookies.Add(cookie);                    //添加cookie,記得使用的是Response對象,而不是Request
 //HttpCookie cookie = Request.Cookies["cookietext"]; //獲取cookie
        //if (cookie != null)        //當存在cookie時間
        //{
        //    this.span.InnerHtml = "<a href=''>" + cookie.Value + "</a>&nbsp&nbsp&nbsp<a href='DelCookie.aspx'>退出</a>";//創建了一個退出的連接
        //}
 //HttpCookie cookie = Request.Cookies["cookietext"];   //獲取cookie
        //if (cookie != null)
        //{
        //    cookie.Expires = DateTime.Now.AddDays(-1);  //這里是讓cookie過期,即不存在cookie,即退出
        //    //Request.Cookies.Clear();             //這里是使用clear方法清除cookie
        //    Request.Cookies.Add(cookie);
        //    Response.RedirectPermanent("fmLogin.aspx");
        //}

                  表單是和頁面相關的,只有瀏覽器端提交了這些數據,服務器端才能得到。而有時候希望在服務端任意的地方存取一些和訪問者相關的信息,這時候就不方便將這些信息保存到表單中了,因為如果那樣的話必須隨時注意在所有頁面表單中都保存這些信息。Cookie是和站點相關的,並且每次向服務器請求的時候除了發送表單參數外,還會將和站點相關的所有Cookie都提交給服務器,是強制性的。Cookie也是保存在瀏覽器端的,而且瀏覽器會在每次請求的時候都會把和這個站點的相關的Cookie提交到服務器,並且將服務端返回的Cookie更新到硬盤,因此可以將信息保存在Cookie中,然后在服務器端讀取、修改。服務器返回數據除了普通的html數據以外,還會返回修改的Cookie,瀏覽器把拿到的Cookie值更新本地瀏覽器的Cookie就可以。哪怕請求jpg、js、css這種文件也會帶着Cookie,因為服務器端可能要進行Session的操作,比如判斷是否登錄。互聯網優化的案例:圖片服務器和主站域名不一樣,降低Cookie流量的傳輸。Cookie的缺點和表單一樣,而且還不能存儲過多信息。客戶端、服務器端設置的Cookie雙方都能讀。
                  2.session的添加與刪除

Session["name"] = context;              //創建一個session,他也是以鍵值對的形式存在
if (Session["name"] != null)
        {
            string cotext = Session["name"].ToString();
            this.span.InnerHtml = "<a href=''>" + cotext + "</a>&nbsp&nbsp&nbsp<a href='DelCookie.aspx'>退出</a>";//創建了一個退出的連接
        }
Session.Clear();
        Response.RedirectPermanent("fmLogin.aspx");

                   Session提供了一種把信息保存在服務器內存中的一種方式。它能存儲任何數據類型包括自定義對象,每個客戶端的Session是獨立存儲,Session 對象用於存儲有關用戶的信息,在整個用戶會話過程中都會保留此信息,(保存SessionId的cookie丟失之前)。當用戶在應用程序中從一個網頁瀏覽到另一個網頁時,存儲在 Session 對象中的變量不會被丟棄。Session只可由該會話的用戶訪問(因為SessionId的東東以cookie的方式保存訪問者瀏覽器的緩存里了)用戶不能訪問或修改他人的Session。
                   3.ViewState的使用

ViewState["myKey"] = "MyData";   //用戶數據保存方式
        string myData = string.Empty;    //讀取數據方式
        if (ViewState["myKey"] != null) 
        { 
            myData = (string)ViewState["myKey"];
        } 

                   兩種使用方式: 作用域---頁面級   

          注意:<1>.ViewState不能存儲所有的數據類型,僅支持可序列化對象;       

                <2>.非單值服務器控件的狀態也自動保存在ViewState中,例如:下拉框(文本框是單值控件,所以不會保存在ViewState中),使用ViewState的前提;頁面上必須有一個服務器端窗體標記(<form runat=“server”>),服務器在接收到用戶請求一個頁面后,會自動在請求報文中找看是否包含__VIEWSTATE的隱藏域,如果有,則將中間的值解碼后添加到頁面的ViewState屬性中;服務器在輸出的時候,也會自動的將ViewState中的值添加到表單里名叫__VIEWSTATE的隱藏域中 VIEWSTATE適用於同一個頁面在不關閉的情況下多次與服務器交互。

          禁用ViewState的方法,禁用單個控件的ViewState設定enableviewstate=false,禁用ViewState以后TextBox版本不受影響,Div版本受影響,因為input的value不依靠ViewState。禁用整個頁面的,在aspx的Page指令區加上EnableViewState="false" 。內網系統、互聯網的后台可以盡情的用ViewState。當某些控件的某些屬性不屬於瀏覽器表單的提交范圍時,fw將會把這些屬性添加到ViewState中保存。WebForm的IsPostBack依賴於__ViewState。

          4.Application的對象

          Application對象可以存儲應用程序級的數據;“Application”:應用程序,第一個用戶訪問站點時,應用程序啟動,並創建一個Application對象,創建成功后,整個應用程序中都可以使用該對象,除非應用程序關閉,否則對象一直存儲在內存中。

         

          二.AJAX的初步學習

<form id="frm" action="" method="post">
        <table id="tab" border="0">
            <tr><td>用戶名:</td><td><input type="text" name="txtname" id="txtname" /></td><td><label id="errormsg"></label></td></tr>
            <tr><td>密碼:</td><td><input type="password" name="txtpwd" id="txtpwd" /></td><td><label id="pwderrormsg"></label></td></tr>
            <tr><td colspan="3" style="text-align:center"><input type="submit" name="name" value="注冊 " /></td></tr>
        </table>
    </form>
 $("#txtname").blur(function () {
                var name = $(this).val();
                $.post("Register.ashx", { n: name }, function (msg) {
                    $("#errormsg").text(msg);
                })
            })
string name = context.Request.Form["n"];
        if (!string.IsNullOrEmpty(name))
        {
            if (bll.CheckNameMess(name))
            {
                context.Response.Write("用戶名已存在");
            }
            else
            {
                context.Response.Write("用戶名可用");
            }
        }

                  上面就是一個以注冊用戶名為例學習一下ajax,其實上面的ajax就是在jquery中使用的,$.get/post(導向的地址,屬性值,函數)即可實現。Ajax在本質上是一個瀏覽器端的技術,Ajax技術之主要目的在於局部交換客戶端及服務器間之數據,這個技術的主角XMLHttpRequest的最主要特點,在於能夠不用重新載入整個版面來更新資料,也就是所謂的Refresh without Reload(輕刷新)與服務器之間的溝通,完全是透過Javascript來實行,使用XMLHttpRequest本身傳送的數據量很小,所以反應會更快,也就讓網絡程式更像一個桌面應用程序,AJAX 就是運用Javascript 在后台悄悄幫你去跟服務器要資料,最后再由Javascript 或DOM 來幫你呈現結果,因為所有動作都是由Javascript代勞,所以省去了網頁重載的麻煩,使用者也感受不到等待的痛苦。使用XMLHttpRequest對象  按照下面模式,可以同步地XMLHttpRequest對象:創建對象;-new創建請求; -open()發送請求;-send(),但是使用javascript比較麻煩,於是就改變為了jquery的使用方法。

         嘿嘿,今天就寫到這里,ajax還是我們學習的重點,要好好學習的,加油加油!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM