ASPではajax方式でセッションの実装コードを得る
1525 ワード
私はffブラウザを使っているので、ずっと何の問題も見つかりませんでした.先周ユーザーに提出した时、IEでログインした后は无効だと言って、びっくりしました.結果は本当にそうでした.のとても�
ログインコードは次のとおりです.
だいたいそうだaspの中はsessionを調べるだけで、コードは以下の通りです.
結局IEというセッション("username")で死活はなく、timeoutが設定されても無駄です.
ネットで半日調べたところ、同じ問題が多いことがわかりました.最後に原因を調べました.キャッシュの問題です.
非同期get取得ではurlが変わらない場合、直接呼び出されたキャッシュ内の情報であり、セッション内の値が得られないことになります.
解決策は簡単で、googleの「aspキャッシュクリア」は山ほどあります.
最後はセッションでaspには次のようなセグメントが追加されています.
ログインコードは次のとおりです.
// session
j.ajax({
type:"GET",
url:"sessioncheck.asp",
data:"",
timeout: 1000,
error: function(){
alert('sorry, server is busy now!');
},
success:function(comments_data){
if(comments_data == 1){
el.createDialog(opts);
j.startOver();
}
else{
var sql = selectSQL(searchkey,stype);
window.location.href = sql;
}
}
});
だいたいそうだaspの中はsessionを調べるだけで、コードは以下の通りです.
if session("username") = "" then
Response.Write("1")
else
Response.Write("2")
end if
結局IEというセッション("username")で死活はなく、timeoutが設定されても無駄です.
ネットで半日調べたところ、同じ問題が多いことがわかりました.最後に原因を調べました.キャッシュの問題です.
非同期get取得ではurlが変わらない場合、直接呼び出されたキャッシュ内の情報であり、セッション内の値が得られないことになります.
解決策は簡単で、googleの「aspキャッシュクリア」は山ほどあります.
最後はセッションでaspには次のようなセグメントが追加されています.
Response.Buffer =True
Response.ExpiresAbsolute =Now() - 1
Response.Expires=0
Response.CacheControl="no-cache"
if session("username") = "" then
Response.Write("1")
else
Response.Write("2")
end if