<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript如何控制Session實現原理及代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:52:24
        文檔

        JavaScript如何控制Session實現原理及代碼

        JavaScript如何控制Session實現原理及代碼:看到這個題目,或許有人會提出疑問,JavaScript代表客戶端,而Session代表的是服務器(不知道這樣說大家是否能夠理解)。 先說一下需求,我在做一個權限管理的時候,需要在點擊某個模塊時,Session中相應的改變模塊代號,而實現這個操作的是一個a標簽,當然
        推薦度:
        導讀JavaScript如何控制Session實現原理及代碼:看到這個題目,或許有人會提出疑問,JavaScript代表客戶端,而Session代表的是服務器(不知道這樣說大家是否能夠理解)。 先說一下需求,我在做一個權限管理的時候,需要在點擊某個模塊時,Session中相應的改變模塊代號,而實現這個操作的是一個a標簽,當然

        看到這個題目,或許有人會提出疑問,JavaScript代表客戶端,而Session代表的是服務器(不知道這樣說大家是否能夠理解)。

        先說一下需求,我在做一個權限管理的時候,需要在點擊某個模塊時,Session中相應的改變模塊代號,而實現這個操作的是一個a標簽,當然我不知道 一個linkbutton是否可以同時將跳轉頁面和修改Session做了,個人感覺應該是可以的,具體能不能,如果有人做了Demo可以留言說明。

        a標簽,實現頁面的跳轉,他的onclick事件,執行的也是本頁面中的js方法,現在就回到了題目所描述的問題——寫一個JavaScript方法,使其修改Session。

        其實這個例子不難,但是對我個人的意義卻非同尋常,這個例子解除了我一大部分對AJAX的恐懼。

        首先,是寫一個一般處理程序(也就是服務端代碼)

        需要說明的是,如果要修改Session,需要額外引入命名空間,和實現一個接口(只需實現,別的什么也不用做)
        代碼如下:


        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.SessionState;

        namespace TGB.CJX
        {
        /// <summary>
        /// 修改Session
        /// </summary>
        public class ModifySession : IHttpHandler,IRequiresSessionState
        {

        public void ProcessRequest(HttpContext context)
        {
        context.Response.ContentType = "text/plain";
        context.Session["modelID"]=context.Request.QueryString["session"].ToString();
        //context.Session["modelID"] = "1";
        //context.Response.Write(context.Session["modelID"]);

        }

        public bool IsReusable
        {
        get
        {
        return false;
        }
        }
        }
        }

        有沒有發現上面實現的功能很簡單呢?

        下面,是客戶端代碼

        代碼如下:


        var xmlhttp;
        var session;
        function submit(obj) {
        //session = obj.id.substr(1, 1);
        session = obj.id.replace("model","");
        //IE7,IE8,FF,MOZILLA,SAFARI
        if (window.XMLHttpRequest) {
        //alert("IE7,IE8,FF,MOZILLA,SAFARI");
        xmlhttp = new XMLHttpRequest();
        if (xmlhttp.overrideMinmeType) {
        xmlhttp.overrideMinmeType("text/xml");
        }
        } else if (window.ActiveXObject) {
        //alert("IE5,IE6");
        var activeName = ["MSXML2.XMLHTTP", "Miscrosoft.XMLHTTP"];

        for (var i = 0; i < activeName.length; i++) {
        try {
        xmlhttp = new ActiveXObject(activeName[i]);
        break;
        } catch (e) {
        return;
        }
        }
        }

        if (xmlhttp == undefined || xmlhttp == null) {
        alert("當前瀏覽器不支持創建XMLHTTPREQUEST對象,請更換瀏覽器");
        return;
        }

        xmlhttp.onreadystatechange = callback;

        xmlhttp.open("GET", "ModifySession.ashx?session=" + session, true);
        xmlhttp.send(null);
        }

        function callback() {
        //判斷和服務器的交互是否完成,還要判斷服務器端是否返回了數據
        if (xmlhttp.readyState == 4) {
        //表示和服務器端的交互完成
        if (xmlhttp.status == 200) {
        //alert("正確返回了數據");
        return;
        }
        }
        }

        在回調函數中,我只寫了一個測試正常返回數據的語句,后來注釋掉了。

        在為a標簽綁定事件時,我最初用的是拼接字符串的方法,就是從數據庫中查到模塊ID和模塊名稱,然后通過下面的一條語句進行語句拼接:

        代碼如下:


        StringBuilder sbModel = new StringBuilder();
        //將可以訪問的模塊進行菜單拼接
        for (int i = 0; i < dtModel.Rows.Count; i++)
        {
        sbModel.Append("<li><a id='model" + dtModel.Rows[0]["mdlID"].ToString() + "' href='SpaceWeb.aspx' target='_parent' runat='server' onclick='submit(this)'>" + dtModel.Rows[i]["mdlName"].ToString() + "</a></li>");
        }

        可是這樣寫的很容易出錯,雖然在復制進來之前,我是寫過測試語句,然后再將變量寫到該寫位置的,但是這樣寫出來的語句是很難進行調試的。

        在和別人交流的過程中,說道了Repeater控件,恍然大悟,我重復的這個過程,不就是Repeater控件干的事么?控件替我們干了,干嘛還要自己寫這么容易出錯的代碼呢?

        代碼如下:


        <asp:Repeater runat="server" id="rptModel">
        <ItemTemplate>
        <li><a id='model'+'<%#Eval("mdlID")%>' href="SpaceWeb.aspx" target="_parent" runat="server" onclick="submit(this)"><%#Eval("mdlName" %></a></li>
        </ItemTemplate>
        </asp:Repeater>

        是不是這樣寫,感覺會清晰好多呢,因為我之前用的拼接字符串,并且實現了,用Repeater只是一個思路,在id拼接那不知道會不會又問題,如果有問題,歡迎斧正。

        至此,我的第一篇有關AJAX的文章就寫完了,關于對AJAX的理解只是一個開始,這個里面沒有涉及到數據交互,所以對于某些知識的解釋還是有些蒼白的,隨著學習的深入,關于AJAX的使用,不會僅僅停留在updatepanel和timer這些控件上的。對于某些不太難的實例,自己做一下還是比較好的。

        關于這個例子,你可以問用一個LinkButton其實就可以實現,干嘛弄這么麻煩,但是我想說,我一開始也沒有想到一個LinkButton就可以解決,是自己把問題復雜化了,這個里面涉及到一個頁面跳轉,其實完全可以用LinkButton解決,但是學習嘛就是一個過程,用自己犯的一個小迷糊促進了對AJAX的理解,何嘗不是一件快事~~

        對于AJAX的理解,還在一步步的進行,如果有什么錯誤,還望大家積極評論點評

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript如何控制Session實現原理及代碼

        JavaScript如何控制Session實現原理及代碼:看到這個題目,或許有人會提出疑問,JavaScript代表客戶端,而Session代表的是服務器(不知道這樣說大家是否能夠理解)。 先說一下需求,我在做一個權限管理的時候,需要在點擊某個模塊時,Session中相應的改變模塊代號,而實現這個操作的是一個a標簽,當然
        推薦度:
        標簽: 原理 管理 js
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费在线观看污网站| 日韩亚洲变态另类中文| 免费一级毛片在线播放放视频| 亚洲裸男gv网站| 亚洲午夜免费视频| 亚洲精品无码人妻无码| 亚洲色成人网站WWW永久| 91精品免费在线观看| 欧洲精品码一区二区三区免费看| 亚洲国产成人一区二区精品区| 亚洲免费福利在线视频| 成人a毛片免费视频观看| 亚洲天堂中文字幕在线观看| 免费中文字幕一级毛片| 91香蕉国产线观看免费全集| 午夜亚洲乱码伦小说区69堂| 久久久久亚洲AV无码专区首JN| 免费一级毛片在线播放| 6080午夜一级毛片免费看 | 中国亚洲呦女专区| 亚洲男人的天堂www| 成人毛片18女人毛片免费| a视频在线免费观看| 亚洲国产成人久久综合| 亚洲国产美国国产综合一区二区 | 久久久久国产成人精品亚洲午夜| 四虎永久在线精品免费观看视频| 久久性生大片免费观看性| 亚洲av永久无码| 亚洲欧洲国产经精品香蕉网| 国产成人麻豆亚洲综合无码精品| 成年女人毛片免费观看97| 99爱在线观看免费完整版| 国产JIZZ中国JIZZ免费看| 亚洲精品无码久久久久APP| 亚洲白色白色在线播放| 亚洲VA中文字幕无码毛片| 亚洲国产成人精品女人久久久 | 亚洲一本大道无码av天堂| 免费激情视频网站| 18禁超污无遮挡无码免费网站国产|