JavaScript如何控制Session操作?方法介紹
這篇文章為大家介紹一下JavaScript控制Session操作的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
看到這個題目,或許有人會提出疑問,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的理解,還在一步步的進行,如果有什麼錯誤,還望大家積極評論點評
更多程式相關知識,請造訪:程式設計入門! !

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
