2011-12-01 39 views
2

我有這個佈局任何通過jQuery抓取HTTP請求的方法?

<header> 
<div id="frame"> 
<footer> 

我想要做的是去除模板的頁眉和頁腳部分,這樣每個HTTP請求只傳輸<div id="frame">一個已經運行的應用程序。這是簡單的部分。

話,我想拿起通過AJAX的GET體HTTP響應和淡出的舊框架,並用新的替換它。 這可能嗎?如果沒有,我有什麼建議可以實現這個目標?

編輯:

感謝您的答覆,夥計們。但是,似乎有一個誤解。我試圖實現的不是加載內容或刪除頁眉和頁腳,我已經知道如何做到這一點。

我試圖實現的是中斷HTTP協議刷新頁面請求,以便如果我點擊一個工作鏈接,我想直接在我的JavaScript接收到傳入的服務器響應所以我可以很容易地使用HTTP標頭的新「原始」GET主體替換我的DIV的內容。

我恐怕還需要某種形式的全球鏈接的處理程序,通過AJAX發送,以便網站不會走空當第一次發送的HTTP請求,但我寧願專注於這一點。

+0

老實說,我不明白這一點... –

+0

該應用程序完全正常工作,我不想重寫所有內容,因此必須通過某種方式來獲取通過HTTP發送的信息,並使用JavaScript來替換舊內容。想象一下,通過輸出緩衝將HTTP響應綁定到變量。然後我可以將它回顯到新的DIV中。 – Seralize

回答

0

假設我理解你的問題,這應該爲你工作:

$.ajax({ 
    // your setup code... 
    success: function(html) { 
     $("HEADER, FOOTER", html).remove(); 
     $("containing-frame").fadeOut("fast", 
      function() { 
       $(this).html(html).fadeIn("fast"); 
      } 
     ) 
    } 
}); 
0

我建議增加一個參數到任何後端腳本您是通過AJAX調用,以避免輸出在頁眉和頁腳第一名。如果這是不可能的,你可以使用dataFilter回調$.ajax修改,但是你需要的內容。

$.ajax('/path/to/script', { 
    dataFilter: function(result, dataType) { 
     // process result as necessary 
     return result; 
    } 
}); 
2

.fadeOut()方法也可以具有回調函數,並且在淡入淡出完成後執行。

對於裝載,使用.load()方法。

的第一個參數,您可以只提取頁面片段。
第二個是負載完成時執行的回調。

這給:

$('#frame').fadeOut(function() { 
    // the fadeOut is finished, load the content 
    $(this).load('mypage.html #frame', function(response, status, xhr) { 
     // the load is finished, fadeIn 
     $(this).fadeIn(); 
    }); 
}); 
0

好了,簡單的解決辦法是使用$(element).load和它的回調確定完成Ajax時該怎麼做。

$('#frame.selector').fadeOut().load('the/document.html#frame', function(data) { 
    $(this).fadeIn(); 
}); 

注意#frame末告訴了jQuery只搶到什麼是在ID爲frame的元素。