亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

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

2024-09-06 12:41:09
字體:
來源:轉載
供稿:網友
看到這個題目,或許有人會提出疑問,JavaScript代表客戶端,而Session代表的是服務器(不知道這樣說大家是否能夠理解)。

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

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

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

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

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

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;
}
}
}
}

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

下面,是客戶端代碼

復制代碼 代碼如下:VeVb.com

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和模塊名稱,然后通過下面的一條語句進行語句拼接:

復制代碼 代碼如下:VeVb.com

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控件干的事么?控件替我們干了,干嘛還要自己寫這么容易出錯的代碼呢?

復制代碼 代碼如下:VeVb.com

<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的理解,還在一步步的進行,如果有什么錯誤,還望大家積極評論點評

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲在线视频| 久久精品中文字幕| 日韩女优人人人人射在线视频| 国产啪精品视频网站| 国产欧美一区二区三区在线看| 亚洲伊人成综合成人网| 国产精品旅馆在线| 欧美性20hd另类| 国产一区二区色| 国产狼人综合免费视频| 亚洲欧美日韩一区二区在线| 亚洲精品视频网上网址在线观看| 欧美野外猛男的大粗鳮| 91精品国产高清自在线看超| 色先锋久久影院av| 日本成人免费在线| 清纯唯美日韩制服另类| 国产精品高潮呻吟久久av野狼| 久久99精品久久久久久噜噜| 亚洲精品国偷自产在线99热| 欧美日韩国产999| 92福利视频午夜1000合集在线观看| 国产成人在线一区| 亚洲日本aⅴ片在线观看香蕉| 亚洲电影免费观看高清完整版在线观看| 亚洲精品一二区| 668精品在线视频| 亚洲天堂男人天堂女人天堂| 亚洲一区国产精品| 久久久久亚洲精品成人网小说| 一区二区三区国产在线观看| 日韩欧美一区二区三区| 久久精品一偷一偷国产| 成人亚洲欧美一区二区三区| 欧美福利视频在线观看| 中文字幕免费精品一区| 中文字幕亚洲精品| 国产精品成人av在线| 91精品国产乱码久久久久久蜜臀| 久久久久久中文字幕| 欧美视频中文字幕在线| 日韩三级成人av网| 亚洲精品久久久久久久久久久| 国产精品亚洲第一区| 日韩av在线影视| 欧美激情女人20p| 欧美激情按摩在线| 亚洲高清免费观看高清完整版| 狠狠爱在线视频一区| 亚洲欧美一区二区精品久久久| 亚洲国产成人精品久久久国产成人一区| 亚洲最大的免费| 亚洲第一视频网站| 欧美成人亚洲成人日韩成人| 亚洲自拍偷拍福利| 日本久久91av| 亚洲精品一区在线观看香蕉| 亚洲最大中文字幕| 日韩精品高清在线| 日韩亚洲国产中文字幕| 97av视频在线| 欧美在线视频观看| 538国产精品一区二区在线| 91九色国产视频| 亚洲精品自拍视频| 国产在线播放不卡| 日韩欧美精品在线观看| 成人福利视频在线观看| 国产精品网站大全| 国产玖玖精品视频| 欧美xxxx综合视频| 亚洲成人激情视频| 3344国产精品免费看| 欧美日韩国产专区| 亚洲黄色成人网| 欧美日韩第一页| 欧美夜福利tv在线| 国产午夜精品视频| 亚洲视频精品在线| 欧美一区二区三区艳史| 黄网动漫久久久| 亚洲国产精品成人精品| 少妇久久久久久| 色综合91久久精品中文字幕| 亚洲人成在线播放| 国产欧美精品在线| 欧美日韩一区二区免费在线观看| 国产亚洲精品久久| 亚洲激情视频在线观看| 91精品国产91久久久久久| 国产精品永久免费| 国产精品女人网站| 色综合天天综合网国产成人网| 日本人成精品视频在线| 久久国产精品首页| 亚洲国产精品久久| 91精品久久久久久久久久久久久| 91在线色戒在线| 亚洲男人av电影| 亚洲福利在线播放| 国产精品极品美女粉嫩高清在线| 亚洲欧洲免费视频| 高清日韩电视剧大全免费播放在线观看| 美女啪啪无遮挡免费久久网站| 久久久久久尹人网香蕉| 亚洲视频视频在线| 欧美性极品少妇精品网站| 欧美日韩在线视频首页| 欧美极品少妇xxxxⅹ喷水| 91欧美视频网站| 久久久久亚洲精品国产| 久久久久久国产精品美女| 96国产粉嫩美女| 久久久极品av| 亚洲精品综合精品自拍| 国产成人精品久久二区二区91| 日韩成人中文电影| 国产欧美精品在线| 亚洲丁香久久久| 91久久久久久| 一本一本久久a久久精品综合小说| 国产精品久久999| 性亚洲最疯狂xxxx高清| 亚洲国产精久久久久久| 国产91在线高潮白浆在线观看| 一区二区三区 在线观看视| 国产成人一区三区| 中文字幕在线成人| 色综合亚洲精品激情狠狠| 亚洲97在线观看| 日本高清不卡在线| 久久久久久免费精品| 亚洲人成电影在线| 欧美精品亚州精品| 在线播放日韩精品| 日韩在线视频网站| 久久精品国产亚洲精品| 午夜精品一区二区三区在线| 日本中文字幕久久看| 欧美福利视频网站| 中国china体内裑精亚洲片| 97超级碰碰人国产在线观看| 亚洲色图色老头| 国产亚洲精品综合一区91| 国产精品人成电影| 亚洲精品99久久久久中文字幕| 国产精品日韩欧美大师| 久久亚洲成人精品| 在线免费看av不卡| 精品国产乱码久久久久久天美| 伊人久久久久久久久久久| 久久深夜福利免费观看| 日韩在线观看免费全集电视剧网站| 欧美亚洲视频在线看网址| 性视频1819p久久| 日韩av电影在线播放| 日韩中文在线中文网三级| 久久久久久有精品国产| 91禁外国网站| 久久久综合av| 久久视频国产精品免费视频在线| 久久777国产线看观看精品| 欧美成人激情视频| 中文字幕亚洲一区二区三区|