<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script>
所以我試圖用上面的腳本調用下面的控制器,但是我沒有找到錯誤。任何想法,爲什麼這種方法不工作?在視圖中調用視圖無法正常工作
function jqTimer() {
$this->load->view("jquery.timers.js");
}
<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script>
所以我試圖用上面的腳本調用下面的控制器,但是我沒有找到錯誤。任何想法,爲什麼這種方法不工作?在視圖中調用視圖無法正常工作
function jqTimer() {
$this->load->view("jquery.timers.js");
}
當與<script>
標記加載JavaScript時,src
屬性期待一個文件名到一個js文件。你在CI安裝中給它一個控制器方法的路徑。
你需要做的就是把jquery.timers.js
文件中的文件夾public_html
,並從那裏訪問它什麼:
// assuming you have the script in a [javascripts] folder inside [public_html]
<script src="<?php echo site_url('javascripts/jquery.timers.js'); ?>"></script>
如果您願意來加載通過視圖您的JavaScript,那麼你需要做的這個代替:
<script><?php echo $this->load->view("jquery.timers.js", "", TRUE); ?></script>
這將回聲出<script>
標籤嵌入的JavaScript之間的視圖文件的內容。 (傳遞TRUE
作爲第三個參數返回文件的內容,這樣你就可以回聲出來)
好吧,我不知道我可以使用$ this-> load-> view加載另一個視圖。謝啦!確實幫助很大! – 2012-01-04 17:26:40
FWIW,我永遠不會加載像這樣的嵌入式JavaScript插件(除非是幾行代碼)。外部文件的主要優點之一是瀏覽器端緩存。通過這樣做,客戶端將不得不從每個**請求的插件中下載額外的代碼。 – swatkins 2012-01-04 21:29:59
我看不出有任何理由,你爲什麼要在控制器中創建一個函數只是加載JavaScript文件。 base_url()
功能已經可以做你想做的了。
<script src="<?php echo base_url('path/to/jquery.timer.js'); ?>"></script>
看一看文檔爲URL helper
您正在尋找呼應了鏈接到JS,沒有回聲出JS本身。 您可以創建在一個延伸是CI_Controller核心文件夾MY_Controller,其中:
function jqTimer() {
return site_url("jquery.timers.js");
}
然後,在任何其他控制器(延伸MY_controller)你會去:
$data['js_timer'] = $this->jqTimer();
/* proceed to load main view with $data */
查看:
<script src="<?php echo $js_timer; ?>"></script>
這是乾的,如果你決定使用不同的js定時器插件,你只需要在一個地方替換它:MY_Controller類(相反編輯到每個視圖文件)。
不過,有點奇怪的做事方式......
是'jquery.timers.js'在views目錄下嗎? – 2012-01-02 23:03:26
是的...我也試過它作爲一個子目錄,但我通常也會遇到錯誤。 – 2012-01-02 23:20:29
'jqTimer'是你視圖中的一種方法還是一個函數? – 2012-01-02 23:23:14