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来显示的,所以里面会生成这些信息。会不会是这个原因呢?
于是我就把调试给关了,一切正常了。