次の 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'
);