0

ここに最初の投稿(長年の読者ですが)!

$_SESSION['status'] 変数をチェックし、$_SESSION 変数の値に基づいて特定の要素を非表示/表示する setInterval 関数を作成しました。(授業用に作成しているクイズサイト用です。)

ユーザーが開いている可能性のあるすべてのタブで機能するようにします。たとえば、ユーザーが 2 つのタブを開いて、サイトの 2 つの異なるページを見ているとします。ユーザーがタブ A でクイズを開始すると、タブ B の setInterval 関数は $_SESSION['status'] 変数が変更されたことを確認し、関連する要素を表示/非表示にする必要があります (学生がテスト中にサイトのページを読むのを防ぐため)。クイズ)。タブ A でクイズに答えると、タブ A に正しい情報が表示/非表示されます。ただし、タブ B は、ページを更新するまで同じままで、正しいことを行います。

タブ B を更新せずに独自に変更するにはどうすればよいですか?

大事な場合は、ブラウジング時は $_SESSION['status'] = -1、クイズ時は 0 以上の値です。

前もって感謝します!

<script>
$(document).ready(function(){

function check_login()
{
    if ("<?php echo $_SESSION['status']; ?>" >= '0')
        {
        $("#pagecontainer").hide();
        $("#quiz_msg").show();
        }

    else
        {
        $("#pagecontainer").show();
        $("#quiz_msg").hide();
        }
}

window.setInterval(check_login, 1000);

});
</script>
4

3 に答える 3

2

JavaScript 関数には、ページがロードされた時点でのセッション変数の値が含まれます。

JavaScript はサーバーではなくクライアント上で実行されるため、Javascript は php スクリプトまたはサーバー変数に直接アクセスできません。

これを機能させるには、ajax 呼び出しを使用してセッション変数をチェックするか、気をつけたい場合は websockets を使用する必要があります。

于 2013-08-21T17:45:18.307 に答える
1

このコードは、javascript が html のどこかに配置されている場合にのみ機能します。タグがそれを囲んでいるためだと思います。コードは最初は機能しますが、その後停止するため、次のことを行う必要があります。

  1. 次の内容で、get_status.php (または同様の) という名前の新しい php ファイルを作成します。

    echo $_SESSION['ステータス'];

  2. JavaScript コードを次のように置き換えます。

    $(document).ready(function () {
    function check_login() {
    
        var status = 0;
    
        $.ajax({
            type: "GET",
            url: "get_status.php"
        }).done(function (msg) {
            status = msg;
            if (status >= 0) {
                $("#pagecontainer").hide();
                $("#quiz_msg").show();
            } else {
                $("#pagecontainer").show();
                $("#quiz_msg").hide();
            }
        });
    
    
    }
    
    window.setInterval(check_login, 1000);
    
    });

そして、それだけです:)

于 2013-08-21T17:54:59.603 に答える