从html字符串中获取div内容---jquery

摘要:
divide=“content”style=“500px;left;scripttype=“text/javascript”src=“../Jquery/Jquery-1.11.3.min.js“><function(errorMsg){40alert(errorMs);ViewCodecontent.html第1页<Content Page<divide=“container”>

思考的问题:

  1. 怎么在一个网页的div中嵌套另外的网页(不使用inclue,iframe和frame,不使用他们的原因,include只能嵌套静态网页,iframe对网络爬虫影响,frame嵌套网页无法获取父级页面信息,不够灵活)
  2. 如果不想嵌套整个网页怎么办?(只是嵌套另外页面的部分内容)

回答(想法):

  1. 使用jquery的ajax函数或者load函数可以获取网页内容,从而实现嵌套网页(获取到的网页内容是html字符串)
  2. 怎么从字符串中获取部分内容?

实践1:

index.html页面(在这个页面获取content页面的内容)

从html字符串中获取div内容---jquery第1张从html字符串中获取div内容---jquery第2张
 1 <html>
 2     <head>
 3         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 4         <title>使用jquery的ajax函数获取网页内容</title>
 5         <style type="text/css">
 6             div{
 7                 display: block;
 8             }
 9         </style>
10     </head>
11     <body>
12         <div style=" 100%; height: 100%;">
13             <div id="divTop"></div>
14             <div id="divLeft" style=" 300px; float: left;">
15                 <input type="button" onclick="GetPageContent2('content1.html');" value="获取网页" />
16             </div>
17             <div id="content" style=" 500px; float: left;">
18                 This is index.html;
19                 
20             </div>
21             <div id="divBotton"></div>
22         </div>
23     </body>
24 </html>
25 <script type="text/javascript" src="../jquery/jquery-1.11.3.min.js" ></script>
26 <script type="text/javascript">
27     /*
28      * 使用ajax方式获取网页内容(也可以使用load方式获取)
29      * */
30     //解决方案一
31     function GetPageContent1(url) {
32         $.ajax({
33             type: 'get',
34             url: url,    
35             async: true,
36             success: function(html) {
37                 $("#content").html(html);
38             },
39             error: function(errorMsg){
40                 alert(errorMsg);
41             }
42         })                
43     }
44     //解决方案二
45     function GetPageContent2(url){
46         /* 想知道更多的load方法信息,请查阅jquery api */
47         $("#content").load(url);    
48     }
49 </script>
View Code

content.html页面

从html字符串中获取div内容---jquery第1张从html字符串中获取div内容---jquery第4张
 1 <html>
 2     <head>
 3         <title>内容页</title>
 4     </head>
 5     <body>
 6         <div id="container">
 7             <div style="display: block; 200px;height: 200px;background-color: lightgoldenrodyellow;">
 8                 This is Content Page;
 9             </div>
10         </div>
11     </body>
12 </html>
View Code

这里可以解决第一个问题,点击获取到完整的content.html页面的内容

在查阅jquery的load方法的时候,你可以发现,其实load函数可以网页的指定内容

实践2:

改变index.html页面ajax函数的url路径,获取content.html页面div的id=container的内容

从html字符串中获取div内容---jquery第1张从html字符串中获取div内容---jquery第6张
 1 <html>
 2     <head>
 3         <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 4         <title>使用jquery的ajax函数获取网页内容</title>
 5         <style type="text/css">
 6             div{
 7                 display: block;
 8             }
 9         </style>
10     </head>
11     <body>
12         <div style=" 100%; height: 100%;">
13             <div id="divTop"></div>
14             <div id="divLeft" style=" 300px; float: left;">
15                 <input type="button" onclick="GetPageContent2('content1.html');" value="获取网页" />
16             </div>
17             <div id="content" style=" 500px; float: left;">
18                 This is index.html;
19                 
20             </div>
21             <div id="divBotton"></div>
22         </div>
23     </body>
24 </html>
25 <script type="text/javascript" src="../jquery/jquery-1.11.3.min.js" ></script>
26 <script type="text/javascript">
27     /*
28      * 使用ajax方式获取网页内容(也可以使用load方式获取)
29      * */
30     //解决方案一
31     function GetPageContent1(url) {
32         $.ajax({
33             type: 'get',
34             url: url + ' #container',    
35             async: true,
36             success: function(html) {
37                 $("#content").html(html);
38             },
39             error: function(errorMsg){
40                 alert(errorMsg);
41             }
42         })                
43     }
44     //解决方案二
45     function GetPageContent2(url){
46         /* 想知道更多的load方法信息,请查阅jquery api */
47         $("#content").load(url + ' #container');    
48     }
49 </script>
View Code

到这里我们就解决了,文章开始时提出的问题。。。。。。但是这是静态页面(html页面),在asp.net中适用吗?

答案是不行,无论ajax函数还是load函数获取到的页面内容,都包括title标签和两个asp.net

这是ajax获取到的内容

从html字符串中获取div内容---jquery第1张从html字符串中获取div内容---jquery第8张
 1 <title>
 2 
 3 </title>
 4 
 5     
 6 <div class="aspNetHidden">
 7 <input name="__VIEWSTATE" id="__VIEWSTATE" type="hidden" value="/wEPDwULLTE2MTY2ODcyMjlkZFnC6DYGAeo3UVOfkKoGc1UuBFgx7etuuF2PnttLdzX0">
 8 </div>
 9 
10 <div class="aspNetHidden">
11 
12     <input name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" type="hidden" value="D47C80B6">
13 </div>
14     <div id="container">
15         <div style=" 200px; height: 200px; display: block; background-color: orange;">
16             Welcome to Content Page!
17         </div>
18     </div>
View Code

我们可以看到,不仅获取到了div id="container"的内容而且还多了两个div和一个title

我在网上查了一些资料,有人说使用$(html).find("#container").html();可以解决,实践了一下依然不行,下面是我的最终的解决方案

这个是Test1.aspx页面,相当于之前的index.html(是我命名上的错误,还请见谅)

从html字符串中获取div内容---jquery第1张从html字符串中获取div内容---jquery第10张
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test1.aspx.cs" Inherits="AjaxWeb.GetPageContent.Test1" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 
 5 <html xmlns="http://www.w3.org/1999/xhtml">
 6 <head runat="server">
 7     <title></title>
 8         <style type="text/css">
 9             div{
10                 display: block;
11             }
12         </style>
13 </head>
14 <body>
15     <form id="form1" runat="server">
16         <div style=" 100%; height: 100%;">
17             <div id="divTop"></div>
18             <div id="divLeft" style=" 300px; float: left;">
19                 <input type="button" onclick="GetPageContent2('ContentPage.aspx');" value="获取网页" />
20             </div>
21             <div id="content" style=" 500px; float: left;">
22                 This is index.html;
23                 
24             </div>
25             <div id="divBotton"></div>
26         </div>
27     </form>
28 </body>
29 </html>
30 <script src="../jquery/jquery-1.11.3.min.js" type="text/javascript"></script>
31 <script type="text/javascript">
32     /*
33     * 使用ajax方式获取网页内容(也可以使用load方式获取)
34     * */
35     //解决方案一
36     function GetPageContent1(url) {
37         $.ajax({
38             type: 'get',
39             //url:直接使用url将会获取到整个网页的内容
40             //url + ' #container':获取url网页中container容器内的内容
41             url: url + ' #container',
42             async: true,
43             success: function (html) {
44                 $("#content").html($(html).find('div[id=container]').html());
45 
46                 //$("#content").html(html);
47             },
48             error: function(errorMsg) {
49                 alert(errorMsg);
50             }
51         });
52     }
53     //解决方案二(缺点是content容器会被两次赋值,如不在加载完成之后的函数中进行数据处理,讲含有title、asp.net隐藏内容等标签)
54     function GetPageContent2(url) {
55         /* 想知道更多的load方法信息,请查阅jquery api */
56         $("#content").load(url + ' #container', '', function (response, status, xhr) {
57             //response#是获取到的所有数据(未被截取),status#状态,成功或者失败,xhr#包含 XMLHttpRequest 对象
58             $("#content").html($(response).find('div[id=container]').html());
59         });
60     }
61 
62 </script>
View Code

ContentPage.aspx

从html字符串中获取div内容---jquery第1张从html字符串中获取div内容---jquery第12张
 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ContentPage.aspx.cs" Inherits="AjaxWeb.GetPageContent.ContentPage" %>
 2 
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4 <html xmlns="http://www.w3.org/1999/xhtml">
 5 <head runat="server">
 6     <title></title>
 7 </head>
 8 <body>
 9     <form id="form1" runat="server">
10     <div id="container">
11         <div style="display: block;  200px; height: 200px; background-color:Orange;">
12             Welcome to Content Page!
13         </div>
14     </div>
15     </form>
16 </body>
17 </html>
View Code

注:如直接复制代码,请修改一下jquery文件路径

这里补充一点一下,为什么没有使用母版页

  使用母版页,点击菜单会刷新整个网页,而且使用母版页会造成标签id发生改变,我想实现的是点击菜单,不刷新页面

免责声明:文章转载自《从html字符串中获取div内容---jquery》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何在 CentOS 7 上安装 Python 3浏览器缓存知识小结及应用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

document.cookie的使用

设置cookie 每个cookie都是一个名/值对,可以把下面这样一个字符串赋值给document.cookie:document.cookie="userId=828";如果要一次存储多个名/值对,可以使用分号加空格(; )隔开,例如: document.cookie="userId=828; userName=hulk"; 在cookie的名或值中不...

Spark Partition

分区的意义 Spark RDD 是一种分布式的数据集,由于数据量很大,因此它被切分成不同分区并存储在各个Worker节点的内存中。从而当我们对RDD进行操作时,实际上是对每个分区中的数据并行操作。Spark根据字段进行partition类似于关系型数据库中的分区,可以加大并行度,提高执行效率。Spark从HDFS读入文件的分区数默认等于HDFS文件的块数(...

如何将jsp页面的table报表转换到excel报表导出

假设这就是你的jsp页面: 我们会添加一个“导出到excel”的超链接,它会把页面内容导出到excel文件中。那么这个页面会变成这个样子 在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章,否则处于盲人摸象,毫无目的尴尬境地。本篇就是通过export jsp to excel找到的。  原文地址: How to Export Web Page...

SQL模糊查询语句和Escape转义字符

通配符 描述 示例 % 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。 _(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean...

WebSocket-java实现

一、所需jar 二、创建websocket.jsp(注意此页面链接,需要链接到自己的服务) 1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 2 <% 3 String path = request.getContextPath...

requirej入门nodeTpl使用(三)

基本语法 HTML部分 在模板中的 HTML 部分,使用定界符“<?”和“?>”作为语法的开始和结束。 在定界符内,可以书写任意JavaScript语句,如: 1 <?for(var i=0; i<10; i++){?> 2 <p>hello, world</p> 3 <?}?> 使用等...