使用Ajax获取页面的一部分而不使用.load

时间:2017-06-27 16:11:39

标签: jquery html ajax

我在这里看到很多类似的例子,但似乎无法调整它们为我工作。我正在通过加载来自其他网址的内容来创建目标网页。但我不想要整个html内容,只是在一个名为'main-wrapper'的div里面。我没有使用.load(),因为我想在div加载后运行一些代码,而.load()导致javascript无法正常工作的其他一些问题。

此代码确实加载了内容,但它不是查找并加载.main-wrapper div,而是加载整个页面。我已经尝试了一千种变化而且无法理解它。

$.ajax({
type: 'GET',
url: 'mydynamicurl.html',
dataType: "text", // "html"
success: function(response) {
    $('#load').html(response).find('.main-wrapper');
}

});

3 个答案:

答案 0 :(得分:1)

如果您尝试从页面获取此信息,我相信您需要:var contentRequired = $(response).find('.main-wrapper').html(); 然后,通过以下方式设置此html:$("#load").html(contentRequired);

编辑:只是为了澄清一下,我之所以认为之前没有工作的原因,是因为您正在设置' #load'的HTML值。 div是响应的那个。然后,在此之后,您正在搜索#load;#load' div找到'主包装'内容。

或者,你可以写:

$('#load').html($(response).find('.main-wrapper').html());

然而,我发现这并没有读到。不得不编辑这个答案并更新,因为我忘了将find方法的返回值设置为HTML内容的返回值。

编辑: 如果你的div是一个顶级元素,那么它似乎就是'查找'方法不起作用。相反,过滤器'应该使用方法,如下:

$('#load').html($(response).filter('.main-wrapper').html());

答案 1 :(得分:0)

可能类似于:$(response).find('.main-wrapper')

您可以将字符串html加载到$(...):)

答案 2 :(得分:0)

为什么不使用document.querySelector('。main-wrapper')而不是find?