我有一个.ajax调用,它通过post请求加载一个url,就像.load()一样。我正在阅读responseText以获取有效的HTML。然后我想抓住我自己的#content id。
标题用于替换页面标题。 #content是要在页面上替换的内容,我需要class属性的body标记,因为它们是我想要加载的每个页面的特定类。
$.ajax({
url: url,
type: 'POST',
data: {},
complete: function (result) {
var html = $('<div>' + result.responseText + '</div>'),
title = html.filter('title:first').text(),
b = html.find('body'),
inner = html.find('#content').html();
console.log(b);
//change document title
document.title = title;
//add new content
wrap.html(inner);
//for home page
$(window).trigger('resize');
//fade in
wrap.fadeIn(500, function () {
wrap.trigger('newpage');
$('#wrap').css('min-height', '100%');
});
}
});
假设已定义换行。请。这里的问题是,我无法检索正文以便阅读课程。它总是返回undefined。我也尝试使用.filter()而不是.find(),但没有运气。
有什么想法吗?
答案 0 :(得分:1)
每个文档只能有一个<body>
标记,通常浏览器会将这些标记从html中删除。
您只需在Chrome调试器中输入以下内容即可对其进行测试:
$('<div><head></head><body>Example Text</body></div>');
将返回:
[<div>Example Text</div>]
中记录了这一点
传递复杂的HTML时,某些浏览器可能无法生成完全复制所提供的HTML源的DOM。如上所述,jQuery使用浏览器的.innerHTML属性来解析传递的HTML并将其插入到当前文档中。在此过程中,某些浏览器会过滤掉某些元素,例如
<html>
,<title>
或<head>
元素。因此,插入的元素可能无法代表传递的原始字符串。
答案 1 :(得分:0)
您可以尝试在体内使用内部元素。这是我的策略。我在body中创建了一个 phantom div,并在ajax调用中调用它。
希望它适合你。