gpt4 book ai didi

javascript - ajax完成后cookie删除功能停止工作

转载 作者:行者123 更新时间:2023-11-28 02:40:48 25 4
gpt4 key购买 nike

当页面加载时,会先通过 PHP 创建一个 cookie,然后再使用以下代码创建任何其他内容或 header :

$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's cookies plugin让 jQuery 管理 cookie。

用户通过 Stream 登录后,他们的 Steam64Id 会在 Cookie 中存储一年,以免他们每次访问页面时都必须登录(假设他们会定期访问该页面)。

然后,我在 ajax 调用中使用 Steam64Id 来获取所有用户 friend ,并用他们的名字填充选择元素。

页面上有一个“注销”按钮,单击该按钮将删除 cookie 并刷新页面,导致用户必须再次通过 Steam 登录。这就是我遇到问题的地方。

只要 ajax 调用正在运行(并且需要一段时间才能运行约 57 秒),注销按钮就可以正常工作。一旦该调用完成并且填充了 select 元素,注销按钮就会失败,并在控制台中显示错误:

Uncaught TypeError: Cannot call method 'del' of undefined

该错误所指的代码是删除cookie并刷新页面的函数:

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

我不明白这个错误,也不明白为什么会抛出这个错误。任何帮助都会很棒。

最佳答案

我必须看到更多的客户端代码和 AJAX 响应才能确定,但​​我怀疑 AJAX 响应包含一个 SCRIPT 标签,它会重新加载 jQuery,导致所有加载的插件 ($.cookies包括引用)被删除。

请记住,$.cookiesjaaulde.utils.cookies 的别名,因此故障排除的一部分可能是使用它来代替并查看它是否有效。

关于javascript - ajax完成后cookie删除功能停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com