2014-03-31 122 views
0

我試圖在點擊該頁面上的鏈接時將數據發送到索引頁面。 index.php頁面看起來是這樣的:

include "../app/bootstrap.php"; 
include ("../src/controllers/DisplayContentsController.php"); 

$data = new DisplayContentsController(); 
$link = (isset($_POST['link']) ? $_POST['link'] : null); 

if ($link != null) 
{ 
    $data->show($twig, $starting_file_path . '/' . $link); 
    $starting_file_path = $starting_file_path . '/' . $link; 
} 
else 
{ 
    $data->show($twig, $starting_file_path); 
} 

和加載的枝條模板我有這樣的:

<script> 
    jQuery('.show_content').click(function(e) 
    { 
     e.preventDefault(); 

     var href = jQuery(this).attr('href'); 
     jQuery.post(window.location, { link: href }); 
    }); 
</script> 

我想用新的鏈接重新加載頁面這樣,它加載正確的目錄。但是,當我執行jQuery.post()時,顯示的內容不會改變。有人可以幫助我找出哪裏出了問題,我該如何做到這一點?

+0

只是爲了添加內容,但對內容的請求應該由GET進行管理,並且這些更改不應由POST管理兩次。 – JorgeeFG

回答

1

POST請求的輸出將在成功處理函數上返回。例如,你需要做這樣的事情:

jQuery('.show_content').click(function(e) 
{ 
    e.preventDefault(); 

    var href = jQuery(this).attr('href'); 
    jQuery.post(window.location, { link: href } , function(data){ 
     //data will have the new HTML after the page posted back. You can use that 
     //HTML to load if onto an element on the page. Something like: 
     $('#content_result').html(data);   
    }); 
}); 

假設你有一個「ID = content_result」 - 或類似的東西但─您可以使用到HTML載入它div

如果你希望將結果添加到內#content_result則已經顯示在現有的HTML簡單地做:

$('#content_result').html($('#content_result').html()+data); 

現在,請記住,這將返回的一切 - 整個頁面 - 如果你一味地保持附加內容時,最終會出現不符合有效HTML的頁面 - 例如,頁面上有多個<head><body>部分等。最好的辦法是提取您真正關心的部分,並且僅附加該部分,以便始終以有效的HTML文檔結束。

jQuery提供了很多選項來做這種事情。

+0

工作。有什麼方法可以將結果追加到頁面中,以便舊數據保留下來?所以舊的目錄內容保持不變,並且所創建的新數據僅添加到頁面中? – zachstarnes

+0

你的意思是像$('#content_result')。append(data)? http://api.jquery.com/append/ – Schleis

+0

@zachstarnes,完全可以追加結果,如果這是你想要的。查看我的更新。 – Icarus