当前位置: 首页 > 面试题库 >

使用jQuery Ajax获取另一个页面的div的内容

刘狐若
2023-03-14
问题内容

我希望page.html能够对side.html的内容进行ajax请求,并提取其两个div的内容。但是,尽管我尝试了一切,但我仍找不到解析响应的正确方法

这是side.html:

<!DOCTYPE html>
<html>
<head>
<title>Useless</title>
</head>
<body>
<div id="a">ContentA</div>
<div id="b">ContentB</div>
</body>
</html>

这是page.html

<!DOCTYPE html>
<html>
<head>
<title>Useless</title>
<script type='text/javascript' src='jquery-1.9.0.min.js'></script>
</head>
<body>
Hello
<script type="text/javascript">
jQuery.ajax({
        url: "side.html",
        success: function(result) {
            html = jQuery(result);

            alert(html.find("div#a").attr("id"));
            alert(html.find("div#a").html());
            alert(html.find("div#a"));

        },
    });
</script>
</body>
</html>

当我访问该页面时,没有任何错误,并且三个alert()产生了undefined,undefined和[object
Object]。我究竟做错了什么?例子在这里。


问题答案:

您需要更改此行:

html = jQuery(result);

对此:

html = jQuery('<div>').html(result);

实际上,更好的是,您应该将此声明为局部变量:

var html = jQuery('<div>').html(result);

说明

当您这样做时jQuery(result),jQuery拉出<body>元素的子元素并返回围绕这些元素的包装器,而不是返回该<html>元素的jQuery包装器,我倾向于认为这是相当愚蠢的。

在您的情况下,<body>sidebar.html的包含几个元素和一些文本节点。因此,返回的jQuery对象是这几个元素和文本节点的包装。

当您使用时.find(),它将搜索您调用它的jQuery对象包装的元素的 后代 。在你的情况下,<div id="a">不是
其中之一,因为它实际上是 一个 包装的选择的元素,并且不能是其自身的后代。

通过将其包装<div>成您自己的a,然后将这些元素“向下”推到某个级别。当您.find()在上面的固定代码中调用该代码时,它会寻找该代码的后代,<div>从而找到您的<div id="a">

评论

如果您<div id="a">不在最高级别,即的直接子级<body>,则您的代码可以正常工作。对我来说,这是不一致的,因此是错误的行为。为了解决这个问题,jQuery
<div>在工作<body>内容提取魔术时应该为您生成容器。



 类似资料:
  • 问题内容: 您将从这段代码中看到它从hash标签加载了内容URL。无论如何,是否只能从该外部页面加载单个div元素。 所以像之后 但这不起作用。 谢谢 问题答案: 您只需要在URL之后添加一个jquery选择器。 直接来自API的示例: 因此,它的作用是从指定的URL加载#container元素。

  • 问题内容: 我在一个名为的页面中有一个锚点,但在获取Bootstrap模式以显示另一个名为的页面中的数据时遇到了麻烦。 menu.html Lab6.html 我做错什么了吗? 问题答案: 更新资料 您尝试从另一个页面获取模式内容的方式不正确。 根据Bootstrap的文档: 如果提供了远程URL,则将通过jQuery的load方法加载一次内容并将其注入div中。如果您使用的是data- api,

  • 问题内容: 有没有办法将javascript变量设置为另一个HTML页面的内容? 我试过了: 但是它什么也没返回。…即使它说明了这个主意…所以…有人可以告诉我该怎么做吗?还有某个网站或该网站中的内容,例如: 真的会对我有帮助,在此先感谢! 问题答案: 听起来您在寻找这个: 现场演示(单击)。 是jQuery的简写方法。http://api.jquery.com/jquery.ajax/

  • 问题内容: 有没有办法做到这一点? page1.php-有 index.php-有 我可以以某种方式从div内部的page1.php中获取数据并将其加载到index.php中的div中吗? 我已经使用css-tricks网址中提供的代码完成了此操作:http : //css- tricks.com/examples/DynamicPage/ 但这使用哈希更改事件。我不想使用哈希功能,而只想使用加载

  • 我有一个带有类属性。我无法改变这一点。 我试图在它的右边浮动一个较小的div,但是,它总是出现在父div的下面。我必须如何标记CSS?

  • 问题内容: 使用.load()(或任何jQuery ajax函数)从域中的任何位置请求数据都很好。 但是,尝试访问其他域中的URL无效。你怎么做呢?另一个领域也恰好是我的。 我读到一个技巧,您可以使用PHP并制作一个获取内容的代理,然后在服务器上的php位置上使用jQuery的ajax函数,但这仍在您自己的服务器上使用jQuery ajax,因此这不算在内。 有没有好的插件? 编辑: 我发现了一个