cspで使うセッション変数の値を関数で変更して元の画面を表示するとアペンドする現象が生じる。
次のようなプログラムです。
<a href=# onclick='Js_StageCNG(3)'>ステージ3に進む</a>
・・・
Set Stage=%session.Get("STAGE")
if Stage="" set Stage=1
・・・
if Stage=3 {
動かなかったので、すべてコメントに変えたがやはり動かなかった
}
<script language=javascript>
function Js_StageCNG(key) {
ans=#server(..StageCNG(key))#
window.location.href="...csp"
}
</script>
<script language=cache method="StageCNG" arguments="key:%Library.String" returntype="%Boolean">
do %session.Set("STAGE",key)
quit 1
</script>
この現象は、最近、突然に起こるようになりました。
Comments
Yamamotoさん
こんにちは。
セッション変数のSTAGEに3を代入したにも関わらず、STAGE=3の処理が動作せず、元の状態に戻ってしまうということでしょうか。
であれば、利用されているブラウザーのCookieを受け付けないようになっている可能性があるかと思います。
Edgeでしたら、以下の点を確認いただければと思います。
右上の「...」メニューの「設定」をクリック
左にある「Cookieとサイトのアクセス許可」をクリック
「Cookieデータの保存と読み取りをサイトに許可する(推奨)」がONになっているかを確認
インターシステムズの飯島様からエラーログを見る方法を教えて貰い、エラー原因が分かり、解決しました。昔、エラーは画面に表示されていたのでCacheはもう何十年と使っているのにログファイルの在りかを知りませんでした。また、解決したことをお伝えしていなくて失礼をしました。原因は、条件文で分岐したとき、在る条件では使わない関数の中にその環境で使う変数を#(××)#で取り込んでいて変数××が未定義だったという超初歩的ミスです。
この件、解決しましました。理由は、使っていないjavascript関数の中に未定義の変数を#(××)#形式で取り込んでいてその人に気付かなかったという超初歩的ミスです。随分前に解決したことを伝えましたが、問い合わせのメールが届き、それにも答えましたがまた届きました。このシステムの中で返信しないといけなかったのですね。きっと。