1
chairuosen 2013-12-07 21:51:28 +08:00 1
window.location.href=""
用来控制地址的 |
2
catsky OP @chairuosen 谢谢,我本来是打算在后台的python代码里来实现
@app.route("/vote") def vote(): user_id = request.args.get('uid', '') if user_id == '': return redirect('/signin') # 不起作用,页面无法重定位 .... |
3
chairuosen 2013-12-07 22:00:21 +08:00
@catsky 不太了解python,不过在后端直接控制前端页面刷新好像是不可能的。除非在前端的js里控制。
|
4
zenxds 2013-12-07 22:44:49 +08:00
没在那边登陆过,但是根据我的经验应该是这样的,三角形的链接是一直指向登陆的,当用户登陆的状态加载JS把三角的跳转阻止掉就可以了,未登陆的情况下不进行处理
|
5
strak47 2013-12-07 22:50:13 +08:00
大多数redirect 不是用 raise redirect吗...
|
6
cyr1l 2013-12-08 00:58:29 +08:00
|
7
txlty 2013-12-08 01:52:53 +08:00
不了解python,但类似return redirect('/signin')这样的语句,是在http报文头里增加Location:并生效的。
如果页面已经输出,http会话已经结束,也就无法控制信息头。这种语句就不会起作用。 有些语言,会发出一个警告错误。类似headers already sent.... 另外,js的return false无法“返回”给服务端。只能作为一个参数向服务端发起请求。 |
8
txlty 2013-12-08 02:08:31 +08:00 1
晕倒!!看了一下news.dbanotes.net的实现方法,和楼主说的不是一回事。
登陆后href里的url加上了&by=xxx &auth=xxx 两个参数。并且加上了onclick="return vote(this)"。 登录前,相当于正常点击链接并跳转到对应地址,如果by / auth参数为空,则返回登录页面。 登录后,点击链接仍然访问对应地址,但通过return false阻断跳转,并执行去掉三角的操作。 |
9
txlty 2013-12-08 02:19:12 +08:00
访问对应地址是通过在页面上新建一个image实现的。
var ping = new Image();//新建一个图片 ping.src = node.href; //图片src为a标签里的herf值。相当于向href值发去一个get请求。 ..... return false; 让链接失效,不跳转。 这么玩有个小缺点。那就是服务端会收到一堆Content-Type:image请求而标准的应该是text/html; 浏览器会产生一个提示:Resource interpreted as Image but transferred with MIME type text/html: |
10
txlty 2013-12-08 02:27:17 +08:00
更正一下,请求类型是Accept,返回的数据类型才是Content-Type
|