我有一个已经在使用此布局的应用程序
<header>
<div id="frame">
<footer>
我想要删除模板的页眉和页脚部分,以便每个HTTP请求只传输<div id="frame">
。这很容易。
然后我想通过AJAX获取GET主体HTTP响应并淡出旧框架并将其替换为新框架。 这可能吗?如果没有,有什么建议我可以实现这个目标吗?
编辑:
感谢您的回复,伙计们。但是,似乎存在误解。我想要实现的是不加载内容或删除页眉和页脚,我已经知道如何做到这一点。
我想要实现的是在每个请求中中断刷新页面的HTTP协议,这样如果我点击一个工作链接,我想收到传入的服务器响应直接在我的javascript中,所以我可以使用HTTP标头的新“原始”GET主体轻松替换我的DIV内容。
我可能还需要通过AJAX发送某种全局链接处理程序,以便在首次发送HTTP请求时网站不会显示为空白,但我稍后会关注这一点。
答案 0 :(得分: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();
});
});
答案 1 :(得分:0)
假设我已经理解了你的问题,这对你有用:
$.ajax({
// your setup code...
success: function(html) {
$("HEADER, FOOTER", html).remove();
$("containing-frame").fadeOut("fast",
function() {
$(this).html(html).fadeIn("fast");
}
)
}
});
答案 2 :(得分:0)
我建议在你通过AJAX调用的任何后端脚本中添加一个参数,以避免首先输出页眉和页脚。如果无法做到这一点,您可以使用dataFilter
中的$.ajax
回调来修改您需要的内容。
$.ajax('/path/to/script', {
dataFilter: function(result, dataType) {
// process result as necessary
return result;
}
});
答案 3 :(得分:0)
嗯,简单的解决方案是使用$(element).load
和回调来确定完成ajax后要执行的操作。
$('#frame.selector').fadeOut().load('the/document.html#frame', function(data) {
$(this).fadeIn();
});
注意最后的#frame
告诉jQuery只抓取ID为frame
的元素中的内容。