有没有办法通过jQuery获取HTTP请求?

时间:2011-12-01 14:22:42

标签: javascript jquery ajax http

我有一个已经在使用此布局的应用程序

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

我想要删除模板的页眉和页脚部分,以便每个HTTP请求只传输<div id="frame">。这很容易。

然后我想通过AJAX获取GET主体HTTP响应并淡出旧框架并将其替换为新框架。 这可能吗?如果没有,有什么建议我可以实现这个目标吗?

编辑:

感谢您的回复,伙计们。但是,似乎存在误解。我想要实现的是不加载内容或删除页眉和页脚,我已经知道如何做到这一点。

我想要实现的是在每个请求中中断刷新页面的HTTP协议,这样如果我点击一个工作链接,我想收到传入的服务器响应直接在我的javascript中,所以我可以使用HTTP标头的新“原始”GET主体轻松替换我的DIV内容。

我可能还需要通过AJAX发送某种全局链接处理程序,以便在首次发送HTTP请求时网站不会显示为空白,但我稍后会关注这一点。

4 个答案:

答案 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的元素中的内容。