为什么80%的码农都做不了架构师?>>>   

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

点击即可返回上一层目录,可是这样是返回到父级页面的首页,我们原本的操作记录清空了(比如说我们翻到第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\u003awindow.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//xxxxxreturn 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地址了。

转载于:https://my.oschina.net/hjchhx/blog/813757

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

  1. vue router-link子级返回父级页面

    vue-router嵌套路由,从二级路由跳转到一级路由时,间歇性导致一级路由重叠 解决方法: 1.使用this.$router.push跳转 转载于:https://www.cnblogs.com/K ...

  2. C#控件访问调用它的父级页面

    C#控件访问调用它的父级页面 你建立一个winform程序,出来一个默认窗体Form1,再添加一个UserControl,默认名字为UserControl1; 在Form1的窗口里写如下的代码:    ...

  3. [html] 怎样使用iframe刷新父级页面

    [html] 怎样使用iframe刷新父级页面 //在父页面中window.addEventListener("message",function(e){if(e.data.rel ...

  4. [html] 怎样使用iframe刷新父级页面?

    [html] 怎样使用iframe刷新父级页面? //在父页面中window.addEventListener("message",function(e){if(e.data.re ...

  5. Layui父级页面调用子级页面方法

    父级页面调用子级页面方法 百度了一堆,没几个有用的,为避免以后会用到,在这记下笔记 layer.open({title : "xxxx",type : 2,content : Gl ...

  6. js中子父级页面相互调用

    1.父级页面获取子级属性,例如ID var   obj   =  $(window.frames["addQualiframe1"].document);        //add ...

  7. jquery刷新当前页面、刷新父级页面

    jquery刷新当前页面.刷新父级页面 window.location.reload(); // 刷新当前页面 parent.location.reload(); // 刷新父级页面 opener.l ...

  8. 刷新当前页面-父级页面

    如何使用jquery刷新当前页面 下面介绍全页面刷新方法:有时候可能会用到 window.location.reload(); //刷新当前页面.() parent.location.reload() ...

  9. 如何使用jQuery刷新当前页面、刷新父级页面?

    如何使用jQuery刷新当前页面.刷新父级页面? 1.全页面刷新方法 window.location.reload(); //刷新当前页面.parent.location.reload(); //刷新 ...

最新文章

  1. 剑指offer:面试题20. 表示数值的字符串
  2. 电脑录屏工具_屏幕录制工具有哪些?这些录屏软件须知
  3. Windows Azure真实案例:微软IT-将拍卖工具搬移至云端,方便雇员捐赠
  4. Docker+mysql
  5. [导入]rep_daqjcrb
  6. C++ Primer 5th笔记(chap 17 标准库特殊设施)匹配与 Regex 迭代器类型
  7. 分布式系统的可靠协调系统——Zookeeper
  8. 详测 Generics Collections TQueue (3): OnNotify、Extract
  9. 注册表操作(VC_Win32)
  10. Dividing the numbers CodeForces - 899C (构造)
  11. 设置ArcGIS的外观改回到出厂
  12. 饶毅教授纵论“科学家的九个层次”;看到最后一句,终于绷不住了
  13. TypeScript 基础类型 1
  14. html新年倒计时特效,js实现新年倒计时效果
  15. Three.js - 光源使用详解3(环境光 HemisphereLight、镜头光晕 LensFlare)
  16. 判断单链表是否有环及环的链接点(转)
  17. Mac提高办公/开发效率的几个软件推荐
  18. 中科世为 Z6S Linux HMI 屏幕模组上手记录 | 01 - 环境搭建
  19. PostgreSQL修改用户密码
  20. 做大做强并非国企改革唯一选项

热门文章

  1. Python时间戳转时间
  2. matlab学习——1.基本操作
  3. Yii2 使用 QQ 和 Weibo 第三方登录源码
  4. 项目前期——用例图、类图、活动图、组件图
  5. MS SQL SERVER2005 分页存储过程
  6. ubuntu安装新字体
  7. R语言文件下载:谁来帮我把这个128个音频下载一下
  8. python 打印数组变量_使用Python将数组的元素导出到变量中(unpacking)
  9. mybatis mapper配置 bigint_SpringBoot基础架构1(SpringBoot、MyBatis-Plus与Thymeleaf)
  10. 计算机组成原理 输入输出系统,计算机组成原理(第七章输入输出系统