我们经常会碰到类似用户在没有登录的情况下进行提问、评论,需要用户登录后返回刚才浏览的网页,这种功能用cookie保存当前url地址来实现。我用的是jquery,读者需要懂点jquery中的ajax请求。这个场景的cookie名我用‘__forward__‘,读者可以用自己需要的标识符。
1. 不下载cookie.js。用post请求将当前网页的ulr地址传到后台,让后台用cookie保存url地址;在完成类似登录的页面的功能后,从cookie中取出来,用于页面跳转。
1.1 html页面
//js部分$(‘#ask‘).click(function(){ var href = window.location.href; //用于没有登录的用户在登录后返回。 $.post("<{:U(‘question‘)}>",{‘url‘:href}, function(data){ //把当前页面的链接传递给后台 alert(‘ok‘); }
1.2 PHP部分
cookie(‘__forward__‘, I(‘post.url‘)); //我用的是ThinkPHP中自带的I()来获取post过来的url。读者可以用自己的方式获取传递到后台的url。 //下面是你做的业务功能,完成后可以在后台任何地方获取cookie中的url,并实现跳转。 //页面跳转 $url = cookie(‘__forward__‘); cookie(‘__forward__‘, null); //注意:在取到cookie中的url后,将这个cookie删除。 $this->success(‘test‘, $url); //这里我用的是ThinkPHP中的页面跳转方法
2. 使用cookie.js,在html中使用cookie保存当前的url地址。需要下载cookie.js插件,用法可以取百度。与上一种做法的区别是不用传递cookie到后台了,后台任何地方都可以使用cookie中保存的url来实现跳转回指定页面。
2.1 html部分
<script type="text/javascript" src="__PUBLIC__/js/jquery.cookie.js"></script> <!-- 引入操作cookie的插件,路径是自己本地插件所在目录 --> <script> $(‘#ask‘).click( var href = window.location.href; $.cookie(‘__forward__‘, href); $.get("<{:U(‘question‘}>" , funciton(data){ alert(‘ok‘); }); ); </script>
2.2 php部分
与第一种实现方式的php部分唯一区别是,不用在cookie中保存刚才指定页面的url,即省去前面用cookie保存url的部分,其余相同。
如有错误,望指正。
时间: 2024-10-10 00:00:05