酷秀博客
首页/typecho解决使用PJAX功能后退出功能失效问题教程

typecho解决使用PJAX功能后退出功能失效问题

admin的头像admin8个月前教程126热度

近期有网友反映开启pjax无刷新功能后,在文章评论区域的退出功能会发生失效,导致失效的问题就是验证来源页的密钥不能及时刷新。
为了解决上面这个问题,博主的做法就比较粗暴了,直接通过js提交退出请求(温馨建议:当然也可以尝试通过js刷新退出请求链接,至于这个方法是不是有效果就不得而知了,博主也没有进行测试)。

js代码,如果下面这段代码在pjax中失效,可以尝试在PJAX重载中在调用一遍,注意下面的js代码需要jquery的支持

//退出<br />
function logout(){<br />
$('#logout').click(function(event){<br />
$.ajax({<br />
url: '<?php echo getWebsiteHomeUrl().'action/logout'; ?>',<br />
type: 'POST',<br />
data: {<br />
_: $("#logout").data('url'),<br />
},<br />
headers: {<br />
'content-type': 'application/x-www-form-urlencoded'<br />
},<br />
success: function(response) {<br />
$.message('提交请求成功,切换页面后生效。');//自行替换这里的提醒代码<br />
},<br />
error: function(xhr, status, error) {<br />
console.log(error);<br />
document.getElementById('textarea').value = '';<br />
$.message({message:'系统异常,请稍候重试',type:'warning'});//自行替换这里的提醒代码<br />
}<br />
});<br />
<br />
return false;<br />
});<br />
};<br />
logout();<br />
```<br />
<br />
php代码,自行替换掉下面这段代码,当然你也可以添加一个判断,不同条件调用不同代码。<br />
<br />
**原版大致代码**<br />
<br />
```php<br />
<a href="<?php $this->options->logoutUrl(); ?>" title="Logout"><?php _e('退出'); ?> &raquo;</a><br />
```<br />
<br />
**修改后的代码**<br />
<br />
```php<br />
<a id='logout' data-url="<?php echo Helper::security()->getToken(str_replace(array('?_pjax=%23wrap','?_pjax=%23pjax-load', '&_pjax=%23wrap'), '', $this->permalink)); ?>" title="Logout"><?php _e('退出'); ?> &raquo;</a><br />
```<br />
<br />
上面代码中“'?_pjax=%23wrap','?_pjax=%23pjax-load',<br />
'&_pjax=%23wrap'”这些代码就是使用pjax后每次进行无刷新添加的参数,需要自行查看进行修改。<br />
<br />
把下面的php代码加入到function.php文件中<br />
<br />
```php<br />
/**<br />
* 获取网站首页地址。<br />
*/<br />
function getWebsiteHomeUrl()<br />
{<br />
$rewrite = Helper::options()->rewrite;<br />
$tmpUrl = Helper::options()->siteUrl;<br />
if (!$rewrite) {<br />
$tmpUrl = $tmpUrl . 'index.php/';<br />
}<br />
return $tmpUrl;<br />
}<br />
签名: 最忠诚的BUG开发者来自: 重庆市. Chrome浏览器
文章目录