4

トピックはそれを言います。短いバージョン:最初のページの読み込み時にのみページを強制的に更新する方法が必要です。asp.netでは簡単ですが、従来のaspでこれを実行する方法がわかりません。

長いバージョン:かなり大きなアプリケーションを更新しようとしていますが、その問題の1つは、ログイン時に、いくつかの特定のボタンをクリックするかページを更新しない限り、必要な情報がセッションに保存されないことです。 。これは、顧客がページをナビゲートしようとしたときに問題を引き起こします。

セッションを追跡して手動で設定することはできますが、数時間失敗したため、強制更新の方がはるかに簡単です。最初のページの読み込みを検出する方法があれば、ループは発生しません。アプリケーションのコードが多すぎて(すべてが実質的にコメント化されておらず、まとまりがない)、実際にすべての検証チェックサムなどがどのように構築されるかを確認できないため、リダイレクトも問題外です。

編集:返信ありがとうございます。回答が遅れて申し訳ありません。皆さんから良いアイデアをもらいました。:)

4

6 に答える 6

6
  1. それが最初のロードであるかどうかを示すセッションCookieを確認します(true=以前にロードされたことがある、false=最初のロード)。

  2. a。の場合false、ページを応答にリロードするjsを追加し、Cookieをtrue
    bに設定します。の場合true、それ以上何もしません。ページがリロードされました。

ユーザーがセッションを更新し続ける限り、これにより最初のロードのみが即座にリロードされます。

編集:コメントに応じて、以下はクライアントページをリロードさせるjavascriptの例です。私の知る限り、これはブラウザに依存しません。

<script type="text/javascript">window.reload();</script>

(これはハックのように見えることは認めますが、機能します。追加のjavascriptコマンドを送信せずに、ページをリロードする他の方法があるかもしれませんが、Classic ASPでは何も知りません。)

于 2009-05-12T07:54:18.697 に答える
2

次の3つの手順を試してください。

  1. フォームタグ内にfirstloadという非表示のテキストボックスを追加し、 そのデフォルト値を「true」に設定します
  2. Window.Onload()中に実行するために、JavaScriptメソッドをページに追加します。javascriptはfirstloadテキストボックスの値をチェックする必要があり、その「true」の場合は、クエリ文字列にパラメータを追加してページをリロードします(?reloaded = true)
  3. サーバー側のコードで、再読み込みされたクエリ文字列がtrueであるかどうかを確認します。そうである場合は、firstloadの値を「false」に設定します。
于 2009-05-12T08:05:25.993 に答える
2

ログインがそのページをリダイレクトした後、アプリに新しいページを追加するだけです。つまり、クライアントがlogin.aspでログインジョブを完了したときです。login2.asp をリダイレクトします。login2.asp のコンテンツを単純なスクリプトに設定します。

<script type="text/javascript">window.location.href="home.asp"</script>
于 2009-05-12T08:19:42.913 に答える
2

VBScript の使用。

それ自体にリダイレクトし、クエリ文字列変数を使用して、ページをリロードできます。

<%
  Dim reload: reload = Request.Querystring("re") 
  If reload = "" Then
    Response.Redirect("samepage.asp?re=true")
  End If
%>

別の方法として、セッション変数を設定してそれを確認することもできます。

<%
  If Session("reload") = "" Then
    Session("reload") = "true"
    Response.Redirect("samepage.asp")
  End If
%>
于 2009-05-12T08:44:38.537 に答える
1

なんらかの理由でJavaScriptを機能させるのに問題があったので、最終的にこの単純なコードレットを使用しました。

    If session( "Firstupdate")<> "updated" Then
        Response.AddHeader "Refresh"、 "0"
        session( "Firstupdate")= "updated"
    そうしないと
        Response.AddHeader "Refresh"、 ""
        Session.Contents.Remove( "Firstupdate")
    終了する場合

これはスクリプトとは無関係のようで、私の目的には十分に機能します。理想的には、セッションを削除すると、追加の更新によってページが2回更新されますが、少なくとも、より多くの顧客が流入したときにサーバーに無駄なセッションが読み込まれることはありません。「Session.Timeout」を設定したほうがよいでしょう。 「Firstupdate」変数の場合は明示的にですが、セッションオブジェクト全体とそれに含まれる変数のタイムアウトは明らかに普遍的です。

繰り返しになりますが、応答が遅くなり、助けてくれてありがとう。

于 2009-05-25T11:58:21.393 に答える
1

window.location="currentUrl?reloaded=true"クエリ文字列param'reloaded'== trueの場合、ドキュメントの準備ができた状態でjQueryを使用してページをリロードします。

このようなもの:

<script type="text/javascript">
    $(document).ready(function() {
        if(!urlContainsReloadedIsTrue())
            window.location="currentUrl?reloaded=true";
        });
    });
</script>

このurlContainsReloadedIsTrue()ようなもので関数を作成できます。

于 2009-05-12T07:55:19.753 に答える