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

2023-11-22

我希望 page.html 通过 ajax 请求 side.html 的内容并提取其两个 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]。我究竟做错了什么?例子是活的here.


您需要更改这一行:

html = jQuery(result);

To this:

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

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

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

解释

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

就你而言,<body>sidebar.html 包含几个元素和一些文本节点。因此,返回的 jQuery 对象是这几个元素和文本节点的包装器。

当你使用.find(),它搜索后人由您调用它的 jQuery 对象包装的元素。就你而言,<div id="a"> is not其中之一,因为它实际上是one of包装器的选定元素,并且不能是其自身的后代。

通过将其包裹在<div>自己的元素,然后将这些元素“降低”一个级别。你打电话时.find()在我上面的固定代码中,它会查找该代码的后代<div>因此找到你的<div id="a">.

Comment

If your <div id="a">不是顶级的,即:的直接子级<body>,那么你的代码就可以工作了。对我来说,这是不一致的,因此是不正确的行为。为了解决这个问题,jQuery 应该生成容器<div>对你来说,当它工作时<body>内容提取魔法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 jQuery Ajax 获取另一个页面的 div 内容 的相关文章

随机推荐

  • 如何按嵌套值对 JSON 对象进行排序?

    我有一个 ajax 调用 它返回一个非常复杂的 JSON 对象 并且我很难对其进行排序 My call post reports ajax arguments function data 响应 10001 unitname Fort Wor
  • 为什么 Rust 中的 const 函数不能调用关联函数?

    This const fn pow2 exp u32 gt u32 u32 pow exp 2 导致编译器错误 error E0015 calls in constant functions are limited to constant
  • 隐藏 ListBox 控件中的垂直滚动条

    我正在开发一个应用程序 需要ListBox控制 不幸的是 当我在中添加太多项目时ListBox 显示垂直滚动条 我可以做些什么来隐藏显示的垂直滚动条ListBox 我可以看到有一个隐藏水平滚动条的属性 但没有垂直滚动条的属性 问题解决了 我
  • 如何在 .NET 类库中创建“抽象”枚举?

    我正在制作一个服务器库 其中数据包关联是通过枚举完成的 public enum ServerOperationCode byte LoginResponse 0x00 SelectionResponse 0x01 BlahBlahRespo
  • Python:数据与文本?

    Guido van Rossum 的演讲蟒蛇3000提到了一些最终可以让从 Python 2 过渡到 Python 3 更容易的事情 他专门讨论了文本处理 因为将 Unicode 作为 Python 3 中字符串的唯一表示形式是主要变化之一
  • UPDATE 锁如何防止常见形式的死锁?

    The SQL Server 在线书籍比如说UPDATE锁可以防止常见形式的死锁 更新锁 更新 U 锁可防止常见形式的死锁 他们如何防止常见形式的僵局 我这么说是什么意思 死锁的一种常见形式是两个进程尝试从共享 S 锁升级 即读锁 到独占
  • 将边框应用于 Chrome 中的复选框

    我的网站上有很多表格 当然 其中的许多字段都是必需的 如果必填字段留空 则会为其分配一个 错误 类 并且我尝试用红色圈出该字段 无论它是文本字段 下拉菜单还是复选框 我的 css 文件中有以下代码 error input error sel
  • 从 SQL 查询到应用程序代码的回溯?

    有没有办法在 Rails 开发日志中找到哪一行代码生成了 MySQL 语句 为了进行一些性能优化 我想找到我的应用程序的哪个部分正在创建哪些 MySQL 查询 当我查看日志时 我看到我所做的每个网络请求上都会闪烁数百个查询 我需要找出它们来
  • CoffeeScript 中的命名空间

    我想像在 javascript 中那样使用关键字 with 来使用命名空间 但是 CoffeeScript 将此报告为保留关键字并拒绝编译 有什么方法可以在 cs 中使用命名空间吗 特别是 我想动态包含 CoffeeScript 文件 受信
  • Angular 2:在注入 Router 之前引导至少一个组件

    我在 RC5 应用程序中收到此错误 Promise 拒绝 在注入 Router 之前引导至少一个组件 main ts import platformBrowserDynamic from angular platform browser d
  • 如何让 Visual Studio 2015 xproject (project.json) 引用依赖项目的最高框架

    我正在创建一个针对多个平台 NET 4 0 NET 4 5 NETStandard 1 0 和 NETStandard 1 3 的可重用库 该项目的 NET 4 5 版本包含一些 NET 4 0 版本下不可用的功能 引用该库项目的单元测试项
  • 如何在 Next.js 中向 Jest 测试添加模块别名?

    目前我在 Next js 项目中使用自动导入 配置如下jsconfig json在根目录中 typeAcquisition include jest compilerOptions baseUrl paths components comp
  • Swift 可编码不同的数组类型

    我正在编写一个正在解析的程序JSON包含数组数组的数据 其中嵌套数组具有不同的对象类型 具体来说 String String Int 例如 number 5295 bets 16 83 9 75 99 4 46 27 5 我正在尝试使用可编
  • backbone.js ajax 调用

    我正在为我正在构建的新应用程序学习 Backbone js 我需要执行 AJAX 调用 REST SERVICE 进行身份验证 此调用的正确位置在哪里 在模型 视图还是其他地方 特别与 Backbone js MVC 模型相关
  • 禁用单页应用程序的浏览器后退按钮

    我需要在单页应用程序中禁用浏览器的后退按钮 我尝试使用类似的方法哈希变化 or window history forward但它们不起作用 原因可能是 url 没有在这里更改 我在 AngularJS 中工作 构建一个单页应用程序 我想禁用
  • Tkinter 打包方法混乱

    我不明白为什么包管理器不允许您将左和右打包在顶部打包的小部件下方 我的以下代码的预期输出是 A B C D E 但它只显示 A B C D import tkinter as tk root tk Tk w h root winfo scr
  • 在没有 UAC 提示的情况下从 .NET 应用程序执行进程

    我有一个场景 我需要从 NET 应用程序启动 EXE 但我无法绕过弹出的 UAC 提示 甚至在另一个 EXE 启动之前就会触发提示 可能是在调用时Process Start 我使用此代码来启动应用程序 var info new Proces
  • CSS(也许带有Compass):跨浏览器渐变

    我想在 CSS 中获得渐变 也许通过Compass 适用于所有主要浏览器 包括 IE7 有没有一种简单的方法可以做到这一点 无需编写大量代码 也无需自定义图像文件 我看了指南针的梯度混合 但它不适用于 Internet Explorer 有
  • 网址中可以输入中文吗?

    URL中可以输入中文吗 经测试 URL中可以输入中文 并且会转换为punycode并发出请求 到达相关页面 但目前是否还有其他人会验证网站 URL 是否也允许使用中文字符 Punycode 的存在是为了能够在不受支持的软件中使用非拉丁脚本
  • 使用 jQuery Ajax 获取另一个页面的 div 内容

    我希望 page html 通过 ajax 请求 side html 的内容并提取其两个 div 的内容 但尽管我尝试了一切 但我无法找到解析响应的正确方法 这是 side html div ContentA div div Content