状态保持以及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还是我们学习的重点,要好好学习的,加油加油!!!

我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
原文地址:https://www.cnblogs.com/dyxd/p/4257725.html