我的网站上有一个ajax菜单。 此菜单发送GET请求以检索所单击链接的页面内容。 我从请求中获取的内容是一个完整的HTML页面,其中包含脚本和样式标记在页面上找到的所有元素。 我在XHR响应上使用jQuery.filter将脚本作为HTML脚本标记。 但是,当我尝试获取样式表链接标记时,它无法正常工作。 如果我在XHR上使用jQuery.findon,它只给我样式链接标签。 这是我使用的Ajax
$.ajax({
type: 'GET',
url: url,
dataType: "html",
async: false,
error: function(oXHR, type, exception) {
console.dir(exception);
},
success: function(xhr) {
var scripts = $(xhr).filter('.vod'),
styles = $(xhr).find('link[name="vod"]');
$(styles).each(function() {
if (this && this.href) {
loadStyle(this);
}
});
$(scripts).each(function() {
if (this.text) {
$.globalEval(this.text || this.textContent || this.innerHTML || '');
} else if (this.src || this.href) {
loadScript(this);
}
});
$('#container').html($(xhr).find('#content')[0]);
}
});
答案 0 :(得分:1)
Jquery从响应中删除html,head和body标签。这是因为当您设置t adiv元素的innerHTML时JavaScript的工作原理。所以你没有一个完整的html页面,你有body和head标签的子节点。
因此,您需要使用过滤器,因为链接元素不是子元素。
您的期望:[htmlNodeReference]
获得的内容[title, link, h1, div, etc]