JavaScriptはどのようにSessionを制御しますか?
5157 ワード
このタイトルを見て、JavaScriptはクライアントを代表していますが、Sessionはサーバを代表しています.
まず需要を言います.権限管理をする時、あるモジュールをクリックする時に、Sessionの中でモジュールコードを変える必要があります.この操作を実現するのはaタグです.もちろん、linkbuttonが同時にページを移動したり、Sessionを修正したりできるかどうかは分かりません.もし誰かがデモをしたらメッセージで説明してくれます.
aラベル、ページのジャンプを実現して、彼のonclick事件、実行するのもこのページの中のjs方法で、今テーマの説明した問題に帰りました.――JavaScript方法を書いて、Sessionを修正させます.
実はこの例は難しくないですが、個人的な意味は普通ではないです.この例は私の大部分のAJAXに対する恐怖を解消しました.
まず、一般的な処理プログラム(つまり、サービスエンドコード)を書きます.
説明が必要なのは、Sessionを修正するには、名前空間を追加的に導入し、インターフェースを実現する必要があるということです.
以下、クライアントコードです.
aラベルバインディングイベントの時、最初に使ったのは文字列をつなぎ合わせる方法です.データベースからモジュールIDとモジュール名を調べて、次の文を通して文をつづり合わせます.
他の人と交流しているうちに、Repeatコントロールについて話して、はっと悟りました.私が繰り返しているこの過程は、Repeatコントロールがすることではないですか?コントロールは私達のためにしました.なぜ自分でこんな間違いやすいコードを書く必要がありますか?
これまで、私の第一篇のAJAXに関する文章は書き終わりました.AJAXに対する理解は始まりの一つです.これはデータのインタラクションに関連していないので、いくつかの知識に対する説明はまだ青白いです.勉強が進むにつれて、AJAXの使用については、udatepanelやtimerなどのコントロールだけにとどまることはありません.いくつかの難しい例については、自分でやったほうがいいです.
この例については、LinkButtonを使って実際に実現できると聞いてもいいです.何でこんなに面倒をかけるのですか?しかし、私は最初からLinkButtonが解決できるとは思っていませんでした.自分で問題を複雑にしました.この中にはページのジャンプがあります.自分の作った小さなボケでAJAXに対する理解が促進されました.何がいいことではないですか?
AJAXの理解については、まだまだ一歩進んでいますが、何か間違いがあれば、積極的にコメントをお願いします.
まず需要を言います.権限管理をする時、あるモジュールをクリックする時に、Sessionの中でモジュールコードを変える必要があります.この操作を実現するのはaタグです.もちろん、linkbuttonが同時にページを移動したり、Sessionを修正したりできるかどうかは分かりません.もし誰かがデモをしたらメッセージで説明してくれます.
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>");
}
しかし、このように書いたのは間違いやすいです.コピーする前にテスト文を書いて、変数を書くところですが、このように書いた文は調整が難しいです.他の人と交流しているうちに、Repeatコントロールについて話して、はっと悟りました.私が繰り返しているこの過程は、Repeatコントロールがすることではないですか?コントロールは私達のためにしました.なぜ自分でこんな間違いやすいコードを書く必要がありますか?
<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>
このように書いて、感じははっきりしていますか?前のつづり文字列のため、そして実現しました.Repeatを使うのは一つの考えだけです.idでつづり合わせたらまた問題があるかどうか分かりません.もし問題があれば、斧を歓迎します.これまで、私の第一篇のAJAXに関する文章は書き終わりました.AJAXに対する理解は始まりの一つです.これはデータのインタラクションに関連していないので、いくつかの知識に対する説明はまだ青白いです.勉強が進むにつれて、AJAXの使用については、udatepanelやtimerなどのコントロールだけにとどまることはありません.いくつかの難しい例については、自分でやったほうがいいです.
この例については、LinkButtonを使って実際に実現できると聞いてもいいです.何でこんなに面倒をかけるのですか?しかし、私は最初からLinkButtonが解決できるとは思っていませんでした.自分で問題を複雑にしました.この中にはページのジャンプがあります.自分の作った小さなボケでAJAXに対する理解が促進されました.何がいいことではないですか?
AJAXの理解については、まだまだ一歩進んでいますが、何か間違いがあれば、積極的にコメントをお願いします.