1

ページが読み込まれると、次のコードを使用して、他のコンテンツやヘッダーの前に PHP を介して Cookie が作成されます。

$steam_login_verify = SteamSignIn::validate();
if(isset($_COOKIE['userid']))
{
     //work with cookie value to get data;
     $steam_login_verify = $_COOKIE['userid'];

     $id = new SteamId($steam_login_verify);

     $name = $id->getNickname(); 
     $baseUrl = $id->getBaseUrl();
     $medAvatar = $id->getMediumAvatarUrl();
} else if(!empty($steam_login_verify))
{
     //create the cookie and store the user id as the value
     $exDate = time()+60*60*24*365;
     setcookie('userid', $steam_login_verify, $exDate,'/');

     $id = new SteamId($steam_login_verify);
     $name = $id->getNickname(); 
     $baseUrl = $id->getBaseUrl();
     $medAvatar = $id->getMediumAvatarUrl();
}

次に、James Auldridge のjQuery 用 Cookie プラグインを使用して Cookie を管理しています。

ユーザーが Stream 経由でログインすると、Steam64Id が Cookie に 1 年間保存され、ページにアクセスするたびにログインする必要がなくなります (定期的にアクセスすると仮定)。

次に、Ajax 呼び出しで Steam64Id を使用して、すべてのユーザーの友達を取得し、select 要素に名前を入力します。

ページには「ログアウト」ボタンがあり、クリックすると Cookie が削除され、ページが更新されるため、ユーザーは再度 Steam 経由でログインする必要があります。これは私が問題を抱えているところです。

ajax 呼び出しが実行されている限り (実行に約 57 秒かかります)、ログアウト ボタンは正常に機能します。その呼び出しが完了し、select 要素が入力されると、ログアウト ボタンは失敗し、コンソールに次のエラーが表示されます。

Uncaught TypeError: Cannot call method 'del' of undefined

このエラーが参照するコードは、Cookie を削除してページを更新する関数です。

$('#logout').click(function() {
     $.cookies.del('userid');
     window.location.reload();
});

エラー、またはエラーがスローされる理由がわかりません。ここで何か助けていただければ幸いです。

4

1 に答える 1

1

クライアント側のコードとAJAX応答を確認する必要がありますが、AJAX応答にはjQueryをリロードするSCRIPTタグが含まれているため、ロードされたすべてのプラグイン($.cookies参照が含まれています)が削除されると思われます.

$.cookiesこれはエイリアスであるjaaulde.utils.cookiesため、トラブルシューティングの一部として、代わりにそれを使用して、それが機能するかどうかを確認することを忘れないでください。

于 2012-10-01T14:53:03.910 に答える