0

次の Ajax ログオン スクリプトがあります。 index.phpセッションを設定し{"status":true,"msgs":[],"url":"\/demo\/administrator\/index.php"}、ユーザー名とパスワードがチェックアウトした場合のようなものを返します。その後、ページがリロードされ、PHP スクリプトがセッションが設定されているかどうかを確認し、設定されている場合は適切なページを表示します。

Windows 7 で実行されている FireFox 21.0 では、ページがリロードされたように見えますが、ログオン ページが誤って再表示されることがあります。FireBug を使用しているときに「リロードしているように見える」と言うと、サーバーへの POST が表示され、次に、console.log の「リロード ページ」が少しの間表示された後、ログオン ページが表示されます。その後、ページを手動でリロードすると、セッションがチェックアウトされ、正しいページが返されます。

トラブルシューティングのためsyslog(LOG_INFO,"got here!");に、PHP スクリプトにいくつかのコードを追加しましたが、2 回目はアクセスされていないことがわかりました。したがって、リロード後にサーバーがヒットすることはないと思います。Apache アクセス ログも確認しましたが、最初の POST しか表示されていないと思います。

何が起こっているのか、それを修正する方法を誰かに教えてもらえますか? ありがとうございました

$.post('index.php',{task:'logon',username:username,password:password},
    function (data)
    {
        if(data.status==true){
            console.log('reload page');
            //window.location.href = data.url;
            window.location.href = window.location.href;
            //window.location.reload();
        }
        else {msgs.html("<ul>"+mkList(data.msgs)+"</ul>");}
    },'json'
);
4

2 に答える 2

0

また、ページのプラグマ「no-cache」ヘッダーを設定すると役立つ場合があります。

http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Avoiding_caching

于 2013-06-04T11:31:05.857 に答える