2012-01-02 92 views
0
<script src="<?php echo site_url('bootstrapper/jqTimer'); ?>"></script> 

所以我試圖用上面的腳本調用下面的控制器,但是我沒有找到錯誤。任何想法,爲什麼這種方法不工作?在視圖中調用視圖無法正常工作

function jqTimer() { 
    $this->load->view("jquery.timers.js"); 
} 
+0

是'jquery.timers.js'在views目錄下嗎? – 2012-01-02 23:03:26

+0

是的...我也試過它作爲一個子目錄,但我通常也會遇到錯誤。 – 2012-01-02 23:20:29

+0

'jqTimer'是你視圖中的一種方法還是一個函數? – 2012-01-02 23:23:14

回答

2

當與<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作爲第三個參數返回文件的內容,這樣你就可以回聲出來

+0

好吧,我不知道我可以使用$ this-> load-> view加載另一個視圖。謝啦!確實幫助很大! – 2012-01-04 17:26:40

+1

FWIW,我永遠不會加載像這樣的嵌入式JavaScript插件(除非是幾行代碼)。外部文件的主要優點之一是瀏覽器端緩存。通過這樣做,客戶端將不得不從每個**請求的插件中下載額外的代碼。 – swatkins 2012-01-04 21:29:59

0

我看不出有任何理由,你爲什麼要在控制器中創建一個函數只是加載JavaScript文件。 base_url()功能已經可以做你想做的了。

<script src="<?php echo base_url('path/to/jquery.timer.js'); ?>"></script> 

看一看文檔爲URL helper

0

您正在尋找呼應了鏈接到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類(相反編輯到每個視圖文件)。

不過,有點奇怪的做事方式......