首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jquery -从ajax请求中选择不工作的数据子集

Jquery -从ajax请求中选择不工作的数据子集
EN

Stack Overflow用户
提问于 2019-01-17 23:26:18
回答 2查看 100关注 0票数 0

我正在使用一个模式来提交一份表格。我让它正常工作了。我遇到的问题是用ajax请求返回的数据子集替换模式的子集。

代码语言:javascript
运行
复制
$.ajax({ url: actionUrl, method: 'post', data: dataToSend, processData: false, contentType: false })
  .done(function (data) {

   var newBody = $('.modal-body', data);
   console.log(newBody);
   placeholderElement.find('.modal-body').replaceWith(newBody);
   //other stuff
    }

我正在尝试替换一个活动的模式子集(即获取模型体),并将其替换为ajax请求中的数据子集。

在某些情况下,我从ajax请求得到的响应如下:

代码语言:javascript
运行
复制
<div class="modal-body"><div class="alert alert-danger">Error</div></div>

但是,当我的ajax请求完成时,新的主体是空的。选择器($('.modal-body', data);)返回一个空对象。我不知道为什么它正在寻找的选择器存在于响应中,它应该将<div class="alert alert-danger">Error</div>作为新的对象返回。

如果我将响应修改为<div class="modal"><div class="modal-body"><div class="alert alert-danger">Error</div></div></div>,那么上面的选择器就可以工作了。

我的问题是,为什么一个起作用而另一个不起作用?

Works: $('.modal-body', '<div class="modal"><div class="modal-body"><div class="alert alert-danger">Error</div></div></div>');

不工作$('.modal-body', '<div class="modal-body"><div class="alert alert-danger">Error</div></div>');

我需要做些什么来简化这件事?为什么其中一种选择不起作用?

在ajax请求中,我的placeholderElement是一个简单的引导模式:

代码语言:javascript
运行
复制
<div class="modal fade"  tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <div class="loading"></div>
                <div class="modal-header">
                    <h5 class="modal-title">Modal title</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
//stuff
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
                    <button type="button" class="btn btn-dark text-light" data-save="modal">Save changes</button>
                </div>
            </div>
        </div>
    </div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-18 00:30:06

首先,jQuery函数有两个参数,一个是字符串(选择器),第二个参数必须是DOM元素、文档或jQuery元素作为上下文。

http://api.jquery.com/jquery/#jQuery1

最后,第二种方法不能工作的原因是,上下文获取根节点并忽略它来搜索选择器。这是一个推论,我做了>_<。

编辑:

从我给你的链接来看:

默认情况下,选择器从文档根开始在DOM中执行搜索。但是,可以通过使用$()函数的可选的第二个参数为搜索提供一个备用上下文。

也就是说,它忽略了根元素,因为它表示在^^内。

我希望我能帮助你:)

票数 0
EN

Stack Overflow用户

发布于 2019-01-17 23:38:59

选择器$('.modal-body', data)试图在数据中找到具有该类的现有元素,但数据必须是实际元素或另一个jQuery实例。如果data是一个字符串,您可以尝试首先解析该HTML:

代码语言:javascript
运行
复制
var newBody = $('.modal-body', $(data));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54245741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档