Che*_*hev 5 html javascript ajax jquery dom
我有一个使用jQuery的ajax函数,它定义了一个要调用的错误函数.当服务器上发生错误时,此错误函数将运行."jqXHR"中传递的变量之一包含一个名为responseText的属性.我想将此响应文本转储到页面上的div中,但响应文本包含完整格式的HTML文档.有没有办法使用jQuery遍历这个包含HTML的变量,就像我遍历常规DOM一样?
$.ajax({
blah blah blah...,
error: function (jqXHR, textStatus, errorThrown)
{
var errorText = $(jqXHR.responseText).find('body').html();
// The above line does not work. errorText is NULL.
$('#mainContent').html(errorText);
}
});
Run Code Online (Sandbox Code Playgroud)
我想做一些像上面的代码片段,但我这样做的方式不起作用.有没有办法遍历这个变量,好像它是一个我可以用jQuery导航的DOM?
这里有一个 console.log($(jqXHR.responseText))
这对我来说也是一些甜蜜的发现。
这不起作用,因为在幕后,jQuery 正在创建一个文档片段并在其上设置innerHtml 属性。这不适用于和<html>
节点<body>
,因为它们不是文档节点类型——它们不能放入 DOM 中。
相反,当您调用 时$('<html><body><b>foo</b></body></html>')
,会创建一个片段,<b>foo</b>
其中仅包含“”!那么,你只想要身体部分吗?只需返回:
$(jqXHR.responseText).html();
Run Code Online (Sandbox Code Playgroud)
小提琴证明我所指的内容: http: //jsfiddle.net/L5PR5/1/
编辑#2
我认为考虑到<head>
元素被放入其中,您唯一的选择是使用子字符串:
var res = jqXHR.responseText;
$(res.substring(res.indexOf('<body'))).appendTo('#mainContent');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1897 次 |
最近记录: |