仅使用ajax-jquery在正文中加载内容

仅使用ajax-jquery在正文中加载内容,jquery,Jquery,我只想加载一个页面(sample.html)的正文的内容,并将其附加到另一个页面的正文(index.html)。。这怎么办对不起我是个笨蛋 我使用了下面的代码。。但这似乎不能正常工作 $.ajax({ url: "/site/pages/sample.html", success: function(data){ $('body').append(data); } }); 一种简单的方法是让jQuery过滤掉返回的标记中的元素,然后使用来获取其子元素,包

我只想加载一个页面(sample.html)的正文的内容,并将其附加到另一个页面的正文(index.html)。。这怎么办对不起我是个笨蛋

我使用了下面的代码。。但这似乎不能正常工作

$.ajax({
    url: "/site/pages/sample.html",
    success: function(data){
        $('body').append(data);
    }
});

一种简单的方法是让jQuery过滤掉返回的标记中的
元素,然后使用来获取其子元素,包括文本节点,并将它们附加到文档体:

$.ajax({
    url: "/site/pages/sample.html",
    success: function(data) {
        $(data).contents().appendTo("body");
    }
});

要么修改sample.html并从中删除不需要的内容(如果您仅通过ajax访问它),要么:将ajax函数返回的数据视为一个长字符串,并仅从中复制您需要的内容

$.ajax({
    url: "/site/pages/sample.html",
    success: function(data){
        $('body').append(parseReturnData(data));
    }
});
其中parseReturnData只返回实际页面中所需的内容

你可以这样做 声明要在其中显示页面的div

  <div id="managePage"> </div>
如果要添加单击,请使用onclick,否则您可以根据需要使用

尝试:

$('body').load('/site/pages/sample.html body');
与$.get()不同,.load()方法允许我们指定 要插入的远程文档。这是通过一种特殊的方法实现的 url参数的语法。如果有一个或多个空格字符 包含在字符串中,字符串中第一个 空间被假定为确定内容的jQuery选择器 待加载

请参见
load()
文档中的

更新: 正如@Windkiller在评论中指出的那样,这将复制文档上的
主体
元素。更好的解决方案是使用get并替换
body
的内容,例如:

$.get("/site/pages/sample.html body", function(data) {
     $("body").replaceWith(data);
});

谢谢弗雷德里克。。但是$(data.find(“body”).contents().appendTo(“body”);似乎不起作用..奇怪的是,如果您收到的标记确实包含
元素,那么这应该会起作用。。。您是否在浏览器的错误控制台中看到消息?如果是这样的话,你能把它贴在这里吗?我终于明白了发生了什么:jQuery已经自己从标记中过滤了
元素,所以
find(“body”)
将不匹配任何内容。我的最新答案应该能按预期工作。嗨。。这很管用,但不知怎的,我的示例页面也显示在body标签中。。实际上,它似乎过滤掉了
元素,但没有过滤掉
元素。@ManseUK的答案是否给出了更好的结果,因为在这种情况下jQuery应该只匹配
元素?您的代码将在文档中生成两个主体。因为它执行类似$('body').html(数据)的操作,并且数据已经包含body…@Windkiller它将替换
body
而不是复制它。@ManseUK执行一个简单的测试,运行控制台并输入:$('body').load(“/body”)@Windkiller增加了另一种防止重复的解决方案。这种方法过滤掉身体和头部,但仍然包括头部的儿童。
$.get("/site/pages/sample.html body", function(data) {
     $("body").replaceWith(data);
});