ThinkPHP在控制器里写js代码没有执行的问题

下面是我发在TP论坛里的一条求助帖:

跳转页面时怎么从框架(frame)里跳出来?

就拿“退出”这一项来说吧。
我的“退出系统”链接是写到左边的框架里的,用js动态生成的。也就是说,没法通过链接里的target来指定。

$this->assign('jumpUrl',__URL__.'/login');
$this->success("注销成功!");

这样写的话,要跳转的页面就显示在了右框架里了。
把js代码写到url里面不行。
我把这两行代码注释掉了。直接用

echo "<script>window.top.location.href='$url';</script>";

这样也不行,一方面url里面没法用__APP__这些常量。另一方面,最后执行出来的结果是竟是把<script>标签去掉,剩下的直接输出(window.top.location.href='Index/login';)
我查了Action类里的success函数,没有找到相关的参数

星期天在朋友那吃饭的时候,突然想到一个问题,TP里的标签都是以尖括号(<>)来包含的,我在控制器里写的<script>是不是被当作标签给解析了呢?于是我就重新写了第二段代码:

 echo '<literal><script>alert("退出成功");top.location.href="login";</script></literal>';
这样就行了。

 

posted @ 2011-01-20 13:45  策马江湖  阅读(831)  评论(0编辑  收藏  举报