如何通过jq和php实现返回父级页面(附带记忆功能)

在开发项目的时候,往往会有一些父级页面,例如这样:

点击即可返回上一层目录,可是这样是返回到父级页面的首页,我们原本的操作记录清空了(比如说我们翻到第3页博客,点击去看,再返回父级页面的时候又回到第一页了):

这种体验相当糟糕,我不得不重新点回第三页。

这时候我想起了一个解决方案,使用window.history.go(-1)window.location.go(-1)

window.history.go(-1) 是返回上一页
window.location.go(-1) 是刷新上一页

这样处理如果仅限于一个地址,没有任何跳转其他操作,的确是可行的,那么当有其他操作的时候该怎么办呢?我的解决方案是,渲染该页面的时候,在返回“父级页面“这个按钮的href链接处记录进入到这个页面之前的url地址,从而实现这个效果(PHP使用的是laravel)。

本来是使用base64加密解密的方法进行处理,但由于项目局限无法引入第三方jq库,只能使用转化成16进制的方法进行解决。

首先前端代码:

function goPerson(uid,article_id){
    var local = stringToHex(window.location.href); //不能直接把url当做参数传递,得进行字符串的处理
    var url   = "/blog/"+uid+"?article_id="+article_id+"&url="+local; //拼接url,传递参数至php端
    //url内容类似这样:/blog/1007?article_id=15&url=\u0068\u0074\u0074\u0070\u003a
    window.location.href = url;
}
function stringToHex(str) {
   var arr = [];
   for (var i = 0; i < str.length; i++) {
     arr[i] = "00" + str.charCodeAt(i).toString(16);
   }
   return "\\u" + arr.join("\\u");
}

PHP端代码(laravel):

//获取用户项目详情
public function getBlog($uid, Request $request) {
    $url = $request->input('url');
    $url = $this->unescape(str_replace('\\',"%",$url));
    //其他业务逻辑 
    //xxxxx
    //xxxxx
    //xxxxx
    return view("adm.staff.blogInfo",["blogInfo" => $blogInfo,'url' => $url]);
}
protected function unescape($str) {  
    $ret = '';  
    $len = strlen ( $str );  
    for($i = 0; $i < $len; $i ++) {  
        if ($str [$i] == '%' && $str [$i + 1] == 'u') {  
            $val = hexdec ( substr ( $str, $i + 2, 4 ) );  
            if ($val < 0x7f)  
                $ret .= chr ( $val );  
            else if ($val < 0x800)  
                $ret .= chr ( 0xc0 | ($val >> 6) ) . chr ( 0x80 | ($val & 0x3f) );  
            else  
                $ret .= chr ( 0xe0 | ($val >> 12) ) . chr ( 0x80 | (($val >> 6) & 0x3f) ) . chr ( 0x80 | ($val & 0x3f) );  
            $i += 5;  
        } else if ($str [$i] == '%') {  
            $ret .= urldecode ( substr ( $str, $i, 3 ) );  
            $i += 2;  
        } else  
            $ret .= $str [$i];  
    }  
    return $ret;  
}

跳转后的页面代码:

<a href="{{$url}}">返回上一级页面</a>

这样,便可以记录上一级页面的所有url地址了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯IVWEB团队的专栏

HTTP1.1与前端性能

HTTP协议是前端性能乃至安全中一个非常重要的话题,最近在看《web性能权威指南(High Performance Browser Networking)》,把...

4140
来自专栏java思维导图

【读书笔记】弄懂服务路由与负载均衡,微服务搞起

1 基本概念 SOA 公共的业务被拆分出来,形成可共用的服务,最大程度地保障代码和逻辑的复用,避免重复建设,这种设计称为SOA。 路由 SOA架构中,服务消费者...

3357
来自专栏Java技术栈

Zookeeper面试题锦集

1、zookeeper是什么框架? 2、有哪些应用场景? 3、使用什么协议? 4、说说分布式一致性算法Paxos 5、说一说选举算法及流程 6、zookeepe...

3908
来自专栏杨建荣的学习笔记

运维中的接入管理梳理

数据库层的接入可以提炼出DAO层,通过工厂模式来提供灵活的配置接入,这会是一个通用的接口,同时其他数据库的接入也可以通过这种方式带来接入,提炼的结果就是...

742
来自专栏杨海春的专栏

常用机器性能评估工具

软件系统跑在机器上,处理能力受硬件制约,所以,单机处理能力会有上限。评估机器处理能力的上限,检查程序的瓶颈在哪,有助于程序性能分析。主要的几大硬件:CPU、内存...

4960
来自专栏Timhbw博客

iOS学习巩固笔记-Socket

2016-05-0922:18:41 发表评论 665℃热度 下面是一些个人学习笔记,查缺补漏,巩固知识,希望大家能有所收获。 ? Socket又称"套接字”...

2608
来自专栏大数据

Python爬取哔哩哔哩实时直播弹幕

用Python爬取哔哩哔哩直播弹幕,关键在于找到哔哩哔哩网站的一个POST网址,和应该POST的数据。代码不长,十分简单。关键在于浏览器开发者工具的使用。希望对...

20310
来自专栏服务端技术杂谈

自己动手撸个markdown渲染器

833
来自专栏企鹅号快讯

ForeSpider教程连载之链接抽取

自从来到前嗅,小编从一个爬虫小白到现在能够熟练的采集各种网站各种数据真的是有很大的成长,当然,成长过程中肯定少不了踩坑(很多网站都有防爬措施),为了让各位用户能...

2067
来自专栏机器学习算法与Python学习

Python:爬虫系列笔记(1) -- 综述

转自:静觅 » Python爬虫入门一之综述 大家好哈,最近博主在学习Python,学习期间也遇到一些问题,获得了一些经验,在此将自己的学习系统地整理下来,如果...

3224

扫码关注云+社区