我有一个名为test.html的html页面,这是它的内容:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>
<title></title> </head> <body style="margin: 0; padding: 0; background: #d9d9d9;">
<form name="form1" method="post" action="NewsLetterPreview.aspx?NewsletterID=1" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA3NzM3OTc4N2Rkkk3StA9iwyEdCoR43JPpw6OyRHubNTnbXatTbxCXsVA=" />
</div>
</form> </body> </html>
然后我有另一个页面,我使用$ .get来获取页面的内容:
$.get("test.html", function (data) {
alert($(data).find("body").html());
});
但是alert($(data).find("body").html())
返回null。对alert($(data).find("form").html())
也是如此。仅当我指定alert($(data).find("div").html())
时才会返回输入字段。
如何选择正文/表格?
答案 0 :(得分:2)
如果你想用获取的HTML替换你的身体,这应该这样做。
$.get("test.html", function (data) {
$(body).html(data);
});
修改强>
误读了你的问题。
建议你改用json或.replace()。
示例:alert(data.replace(/^.*?\<body\>(.*?)\<\/body\>.*$/, "$1"));
如果您想要包含身体标签:alert(data.replace(/^.*?(\<body\>.*?\<\/body\>).*$/, "$1"));
我不认为jquery可以按照你希望的方式使用HTML。将其包含在代码中,然后使用常规函数或找到另一种解决方法。
答案 1 :(得分:0)
我不确定解决方案,但我想我可以对这个问题有所了解......
从这里开始:http://api.jquery.com/jQuery/
传递复杂的HTML时,某些浏览器可能无法生成DOM 它完全复制了提供的HTML源代码。如上所述,我们使用 浏览器的.innerHTML属性,用于解析传递的HTML和插入 它进入当前的文件。在此过程中,某些浏览器 过滤掉某些元素,如,或 元素。结果,插入的元素可能不具有代表性 传递的原始字符串。
这意味着在某些浏览器上输入的HTML字符串在jQuery处理字符串之前删除了form,head和body标签 - 所以就好像你返回的字符串只有div一样这是它的内容。