質問
· 2025年5月5日

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>

この現象は、最近、突然に起こるようになりました。

Product version: Caché 2017.1
ディスカッション (2)1
続けるにはログインするか新規登録を行ってください

Yamamotoさん
こんにちは。

セッション変数のSTAGEに3を代入したにも関わらず、STAGE=3の処理が動作せず、元の状態に戻ってしまうということでしょうか。
であれば、利用されているブラウザーのCookieを受け付けないようになっている可能性があるかと思います。
Edgeでしたら、以下の点を確認いただければと思います。

右上の「...」メニューの「設定」をクリック

左にある「Cookieとサイトのアクセス許可」をクリック

「Cookieデータの保存と読み取りをサイトに許可する(推奨)」がONになっているかを確認
 

インターシステムズの飯島様からエラーログを見る方法を教えて貰い、エラー原因が分かり、解決しました。昔、エラーは画面に表示されていたのでCacheはもう何十年と使っているのにログファイルの在りかを知りませんでした。また、解決したことをお伝えしていなくて失礼をしました。原因は、条件文で分岐したとき、在る条件では使わない関数の中にその環境で使う変数を#(××)#で取り込んでいて変数××が未定義だったという超初歩的ミスです。