2011-12-01 36 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的元素。