ThinkPHP里用U方法调用js文件

最近在用ThinkPHP开发一个网站。

后台用的是框架,左框架里用outlookbar显示的导航,链接地址都写在一个js文件里。

outlookbar.additem('基本信息修改',t,'__APP__/Info/index')

高高兴兴地完成了这些后,回过头来一点击:非法操作__APP__

想来想去,是因为在那个js文件里没有被TP进行“模板替换”。在群里把问题提出来,很快有很多网友热心帮助,其中牵风纸鸢的方法尤为独特,在这总结一下。

“把JS文件当做模板文件,通过TP路径去调用。”

在TP里提供了在模板文件中直接调用函数的快捷方法。U是其中之一。手册里有它的用法:

{:U('User/insert' )} 

先把js文件的后缀改成html(这个不会影响),然后写个JsAction,在里面进行调用:

<?php
class JsAction extends Action{
function nav() {
$this->display('Index:js:nav');
}
}
?>

最后,把左框架里的JS链接改一下:

<script type="text/javascript" src="{:U('Js/nav')}"></script>

还不行!这是怎么回事呢?

用firebug看一下,nav.html里面的文件都调入进去了——说明前面做的工作都实现了。这就要开始调试JS文件了。

照例写进去一下alert,没有执行,把里面的其它内容全删了,还是没有执行,这时用firebug查看源代码的时候发现里面并不只有一句alert,还有runtime信息和trace信息——我在做网站的时候默认开了APP_DEBUG,而这个JS文件是通过TP来显示的,所以里面会生成这些信息。会不会是这个原因呢?

于是我就把调试给关了,一切正常了。

posted @ 2010-12-15 17:08  策马江湖  阅读(3025)  评论(0编辑  收藏  举报