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

标签 javascript jquery ajax cookies

当页面加载时,会先通过 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/

相关文章:

javascript - Firefox 3.6 尝试显示缩略图时崩溃

php - 使用ajax和php在MYSQL中插入数据

javascript - 复制按钮删除不间断空格

javascript - 为什么 clearTimeout 在我的代码中不起作用? javascript

javascript - 如何使用正则表达式替换CSS中的url(javascript)

jquery - 如何使用 jQuery 选择第二个结果?

jquery - 有没有办法获取 $.ajax 的默认对象

php - 如何在来自 php 的 ajax JSON 响应中的字符串中添加双引号?

javascript - Ajax 在这两种情况下都运行

jquery - 删除附加到 ajax 请求返回的结果中的自动生成的广告脚本