2012-01-05 65 views
0
$("#slideshow").click(function() { 
    $("#content").fadeOut(function() { 
     $(this).load('<?php $this->load->view("slideshow"); ?>', function() { 
      $(this).fadeIn() 
     }); 
    }); 
}); 

當我在Ci中運行上述代碼時,CodeIgniter將'幻燈片放映'視圖擱置到文檔的開頭。我需要它僅在點擊「幻燈片」的ID時顯示。這段代碼通常有效,但是idk爲什麼現在變得很有趣。有任何想法嗎?jQuery未正確加載CodeIgniter視圖

+1

到底什麼你在幹什麼? 「幻燈片」視圖中有什麼? – 2012-01-05 19:19:14

+0

.load()的第一個參數應該是一個URL,而不是HTML或您在視圖中所擁有的任何參數。 – Tim 2012-01-05 19:23:22

回答

3

我不確定你要在這裏做什麼。在CodeIgniter中查看文件應該包含HTML。控制器可以加載視圖,並根據需要傳遞數據。視圖是模板。

$(this).load('<div id="test"></div>', function(){}); 

這將拋出一個錯誤,因爲.load需要一個URL,而不是HTML(除非你綁定到onload事件,其中1 PARAM可以是數據的一個數組,但我不認爲這是你在做什麼)。

我想你想讓jQuery將視圖文件的內容加載到#content。要做到這一點,你需要一個輸出視圖的控制器。例如:

控制器

function slideshow(){ 
    $this->load->view('slideshow'); 
} 

jQuery的

$("#slideshow").click(function() { 
    $("#content").fadeOut(function() { 
     $(this).load('/path/to/controller/slideshow', function() { 
     $(this).fadeIn() 
     }); 
    }); 
}); 
+0

我用它的基本URL來使用它。謝啦! – 2012-01-05 21:17:48

+0

@MichaelGrigsby:沒有概率,很高興我可以幫助:-) – 2012-01-05 21:20:57

1

這會產生這樣的垃圾,你的瀏覽器就會把它的地方(在文檔的開頭):

$(this).load('<?php $this->load->view("slideshow"); ?>', function() { 

因爲字符串需要正確的編碼,例如作爲一個JavaScript字符串與json_encode­Docs

$(this).html(<?php echo json_encode($view_html); ?>); 
$(this).fadeIn(); 

檢查CI docs how you get the view returned as string,而不是輸出。我把這留作練習。

+0

將HTML數據傳遞給'.load'會拋出一個錯誤。 – 2012-01-05 19:26:19

+0

@火箭:錯誤?不知道,但我修復了網址。可能這需要第二個'json_encode'? – hakre 2012-01-05 19:40:57

+0

'$(this).load('

',function(){});'說'語法錯誤,無法識別的表達式:>'。 – 2012-01-05 19:43:11

0

嘗試做到這一點:

$(this).load("<?php $this->load->view('slideshow','','true'); ?>", function() { ...... } 

請注意,我用單引號,和第三個參數真。

+0

將HTML數據傳遞給'.load'會拋出一個錯誤。 – 2012-01-05 19:26:52