当我使用带参数的控制器函数时,呈现的视图似乎忘记了每个包含的.js文件。
public function view($id = null) {
if(!$id) {
throw new NotFoundException(__('Invalid post'));
}
$post = $this->Post->findById($id);
if(!$post) {
throw new NotFoundException(__('Invalid post'));
}
$this->set('post', $post);
}如果我去掉参数,并将变量'$id = 1‘放在函数上,则postID为1的视图在’post/ view‘中呈现得很好。
我以传统的方式将javascript文件包含到default.ctp中:
echo "script type='text/javascript' SRC='../js/jquery-1.9.1.min.js'></script>";);(它包括'<‘,但这个文本编辑器不会输入它,我猜是出于安全原因)
我对cakePHP的js helpers一无所知。我不能以传统的方式使用javascript吗?
站点在所有其他视图(例如posts/add)中都可以正常呈现,.js文件包含在“posts/ view /1”的源代码中。
发布于 2013-03-22 23:44:10
问题所在
你使用的是javascript的相对路径;
<script src='../js/jquery-1.9.1.min.js'></script>在这个url中,../意味着‘当前位置上的1个目录’,所以当你当前访问这个URL时;
http://mysite.com/home/然后,您的浏览器将正确地尝试从加载脚本;
http://mysite.com/js/jquery-1.9.1.min.js但是,如果您正在访问此url,则返回;
http://mysite.com/home/and/some/more/然后浏览器将在此处查找JavaScript:
http://mysite.com/home/and/some/js/jquery-1.9.1.min.js如何解决这个问题
echo $this->Html->script('jquery-1.9.1.min');使用
https://stackoverflow.com/questions/15573819
复制相似问题