如何通过jq和php实现返回父级页面(附带记忆功能)
时间:2022-05-04
本文章向大家介绍如何通过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=u0068u0074u0074u0070u003a
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地址了。
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- c++奇淫技巧之完美转发
- 控制论与科学方法论-控制与反馈
- 使用docker测试静态网站
- 看看这样的程序排错经历是否似曾相识
- Mysql索引解密(上)
- Kubernetes Dashboard 可视化插件部署 博主亲自实践可用
- Jmeter接口压测示例
- Kubernetes_v1.18.2环境搭建 博主亲自实践可用
- CVE-2020-9484:Tomcat Session 反序列化复现
- Jmeter系列之no-gui模式
- Pytest之基本介绍
- 企业常用的几种发布方式(蓝绿发布 | 滚动升级 | 金丝雀发布)
- 微信小程序的生命周期学习笔记-应用篇
- matplotlib基础绘图命令之plot
- Qt官方示例-样式表