0

ユーザーを10秒または10000ミリ秒待機させた後、あるjspページから別のjspページにユーザーをリダイレクトしようとしています。ただし、ブラウザでページを開くとすぐにリダイレクトがあります。どうしてこうなの?次のコードに何か問題がありますか? redirectFunctionリダイレクトを行う を呼び出しています。

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP - 1</title>
    <script>
        function redirectFunction() {
            <% response.sendRedirect("jsp-2.jsp"); %>
        }
    </script>
</head>

<body>
    <h1>
        Wait while you are redirected...
    </h1>
    <script type="text/javascript"> 
        setTimeout(redirectFunc,10000); // wait for 10 seconds,then call redirectFunc
    </script>
</body>

4

5 に答える 5

1

サーバーから正確にリ​​ダイレクトを送信するため、すぐに起動しました。

コードを変更する必要があるよりも 10 秒後にリダイレクトを起動する場合:

function redirectFunction() {
    window.location.href = "jsp-2.jsp"
}

setTimeout(redirectFunction,10000);

実際に<% response.sendRedirect("jsp-2.jsp"); %>Java サーバーを呼び出すと、http コード 302 が http 応答に設定され、ヘッダー Location: jsp-2.jsp が設定され、ブラウザーはすぐに Location ヘッダーで指定されたページにリダイレクトされます。

それが役に立てば幸い。

于 2012-08-24T08:35:10.173 に答える
1

スクリプトレットのコードはサーバー上で実行されますが、javascript ではありません。これを使って

function redirectFunction() {
            window.location.href = "jsp-2.jsp";
}
于 2012-08-24T08:35:59.877 に答える
0

ページの準備中に sendRedirect の呼び出しがサーバー側で実行され、リダイレクトが実行されます。window.location を使用して、javascript のみでスリープとリダイレクトを行うことができます。

于 2012-08-24T08:40:39.343 に答える
0

HttpServletResponseを使用していると仮定すると、状況コード 302 で HTTP ロケーション ヘッダーを送信していることがわかります。これは、JavaScript のクライアント側の実行時ではなく、ページが要求されたときに発生します。

JavaScript の実行中にしたい場合は、必要な URL を window.location に割り当てる必要があります。

window.location = "http://google.com";

例えば

于 2012-08-24T08:36:10.347 に答える
0

それの訳は

 <script>
        function redirectFunction() {
            <% response.sendRedirect("jsp-2.jsp"); %>
        }
 </script>

として翻訳され、実行されます。

out.print(" <script> function redirectFunction() {");
response.sendRedirect("jsp-2.jsp");
out.print("</script>");
于 2012-08-24T08:36:36.250 に答える