我的ajax请求有问题:
$.ajax({
url: sAjaxPageUrl,
context: document.body,
dataType: "html",
success: function(data) {
var response = $(data).find("#content").html();
response = "<div class=\"popupInner2\"><form action =\"#\" class=\"calledForm\" method=\"post\">"+response+"</form></div><span class=\"clear\"> </span>";
$(this).easyPopup({
sHtml: response
})
submitForm();
}
});
加载的页面是:
<html>
<style type="text/css">
body {background:url('images/content/logo_exclamation.jpg') no-repeat scroll 0 35px #dfe0e2;}
#content {padding-left: 126px;padding-top: 15px;}
#paragraph {color:#314395;font:14px/1.3em Arial;width:auto;margin: 7px 0 0;}
#intro {color:#314395;font:18px Arial;margin-bottom: 0;}
#thirdPartyCookies {padding-right: 10px;}
</style>
<head></head>
<body>
<div id="thirdPartyCookies">
<div id="content">
<p id="intro">
This feature has been disabled.
</p>
<p id="paragraph">We are unable to show what's missing here.<br>
You can change this easily in your <a href="/cookies_settings/cookies_settings.aspx" target="_blank">Cookie settings</a>.
</p>
</div>
</div>
</body>
</html>
这有效,但我想加载thirdPartyCookies div,当我写$(data).html()时,它返回null ... (简而言之,我不需要添加find(),因为我已经“开启”了这个好元素。
先谢谢你的帮助......
答案 0 :(得分:1)
问题在于,在使用jQuery解析html时,<body>
和<head>
和<html>
标记被剥离(出于不明原因)和您尝试的元素达到(id="thirdPartyCookies"
)位于对象的根部。
.find()
只搜索后代,所以由于你的元素在根目录中,它永远不会找到它。我有2条建议。
您可以使用.filter()
来获取元素:
$(data).filter("#thirdPartyCookies").html();
但如果您的HTML稍后更改并且#thirdPartyCookies
是其他内容的子项,那么这将无效。
要使其工作无论您的HTML是什么,请创建一个新的div
并将您的内容插入其中。然后,您可以.find
您的元素:
$('<div>').html(data).find("#thirdPartyCookies").html();
答案 1 :(得分:0)
试试这一行。
var response = $(data).find('#thirdPartyCookies')[0].outerHTML;