首页 » 日记 » 正文内容
2个月前 寻梦xunm 74 日记

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

js代码,如果下面这段代码在pjax中失效,可以尝试在PJAX重载中在调用一遍,注意下面的js代码需要jquery的支持
//退出
function logout(){
    $('#logout').click(function(event){
       $.ajax({
            url: '<?php echo getWebsiteHomeUrl().'action/logout'; ?>',
              type: 'POST',
              data: {
                _: $("#logout").data('url'),
            },
              headers: {
                'content-type': 'application/x-www-form-urlencoded'
              },
              success: function(response) {
                $.message('提交请求成功,切换页面后生效。');//自行替换这里的提醒代码
              },
              error: function(xhr, status, error) {
                console.log(error);
                document.getElementById('textarea').value = '';
                $.message({message:'系统异常,请稍候重试',type:'warning'});//自行替换这里的提醒代码
              }
    });

        return false;
    });
};
logout();
php代码,自行替换掉下面这段代码,当然你也可以添加一个判断,不同条件调用不同代码。

原版大致代码

<a href="<?php $this->options->logoutUrl(); ?>" title="Logout"><?php _e('退出'); ?> &raquo;</a>

修改后的代码

<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>

上面代码中“'?_pjax=%23wrap','?_pjax=%23pjax-load',
'&_pjax=%23wrap'”这些代码就是使用pjax后每次进行无刷新添加的参数,需要自行查看进行修改。

把下面的php代码加入到function.php文件中

    /**
     * 获取网站首页地址。
     */
    function getWebsiteHomeUrl()
    {
        $rewrite = Helper::options()->rewrite;
        $tmpUrl = Helper::options()->siteUrl;
        if (!$rewrite) {
            $tmpUrl = $tmpUrl . 'index.php/';
        }
        return $tmpUrl;
    }
1 赞 or 打赏
喜欢就打赏一点
微信 支付宝
已有0 条评论,1 个点赞
隐私

Q Q:1340326824

vipshiyi@qq.com

QQ群:422720328

生活所迫,再见了苦逼的BUG们,以后有缘在会吧。