博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何通过jq和php实现返回父级页面(附带记忆功能)
阅读量:6840 次
发布时间:2019-06-26

本文共 2089 字,大约阅读时间需要 6 分钟。

  hot3.png

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

142310_t7Wf_2411415.png

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

142649_FUxT_2411415.png

142738_s13f_2411415.png

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

这时候我想起了一个解决方案,使用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;  }

跳转后的页面代码:

返回上一级页面

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

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

你可能感兴趣的文章
nagios安装及配置
查看>>
Spring+CXF配置HTTP代理访问Internet
查看>>
Lync Server 2013企业版部署测试六:前端服务器安装Lync Server系统
查看>>
Error 和 Exception的区别
查看>>
.NET Micro Framework 4.2 beta 源码探析
查看>>
有关NDES管理帐号及用户帐号权限
查看>>
samba实现文件共享
查看>>
我的友情链接
查看>>
过几天就要去公司报道了,记录一下这段时间找工作的经历....
查看>>
我的友情链接
查看>>
什么是p2p流媒体技术?
查看>>
KVM虚拟机快照研究(一)
查看>>
我的友情链接
查看>>
yeelink在PX2上的运用(远程控制)
查看>>
IOS GCD之Block
查看>>
响应式 Web 设计必备的 12 款 CSS 框架
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Java中ArrayList和LinkedList区别
查看>>
css渐变
查看>>