javascript - jQuery 在过滤 AJAX 响应时返回未定义

标签 javascript jquery html ajax

我正试图找出 jQuery 中的 AJAX,并试图提取页面上一个元素的内容并将其注入(inject)另一个元素。这是我一直在玩的一个测试场景:

第一页:

...
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="script.js"></script>
</head>
<body>
    <button>Load it!</button>
    <div class="content"></div>
...

第二页:

...
<div class="container">
    <h1>Hello World!</h1>
    <div class="text">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui nulla impedit a nostrum eos voluptas, quidem cum, consequatur suscipit voluptate officia sapiente laboriosam similique dignissimos praesentium obcaecati, nemo commodi, laborum!</p>
    </div>  
</div>
...

第一页的脚本文件:

$(function(){
    $('button').on('click', function(){
        $.ajax({
            url: "ajax/index.html"
        }).done(function(response){
            $('.content').html($(response).find('.container').html());
        });
    });
});

stack exchange 上的一些帖子,例如 this onethis one已经指出这是我应该使用 AJAX 从另一个页面获取 1 个元素的 HTML 的方向。但是,在第一页上运行代码时,.container 中的内容不会返回,而是将这些 jQuery 方法传递给 console.log()(console.log($(response).find('.container').html());) 返回 undefined 到控制台。这里有什么问题吗?

另外,是的,我知道这里使用 .load() 是一个选项,但我真的很想学习如何使用 jQuery 的 AJAX 方法,因为我相信它可以给程序员更多找到调整的控制。

最佳答案

更改获取响应元素容器的方式。

来自:

$('.content').html($(response).find('.container').html());

收件人:

$('.content').html($($.parseHTML(response)).filter(".container").html()); 

使用 $.parseHTML() 会将您的响应 string 转换为 DOM 节点,以便您可以在其中找到这些元素。

关于javascript - jQuery 在过滤 AJAX 响应时返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31759240/

相关文章:

javascript - 如何在 Konva js 中渲染矩形周围的圆圈?

javascript - jquery 不继续执行其余的 javascript 代码

css - Google Chrome 输入类型 =“date” 强制

javascript - 出现与切换按钮的 JS 相关的错误

jquery - 动态图像宽度(ul/li)

html - 为什么从 View 传递到 Django 模板时,空格后的列表元素消失了?

html - 从输出中过滤掉某些事件日志的问题

javascript - Swagger-JSdoc 不适用于 Node.JS 14.15.4 错误 'ERR_REQUIRE_ESM'

javascript - 如何更改正在上传的图片的名称?

javascript - 隐藏/显示 <select> 取决于其他 <select>