至于获取DIV内部内容报错的原故深入分析及消除办法,div原因剖析

1、错误描述

关于获取DIV内部内容报错的原因分析及解决办法,div原因分析

1、错误描述

图片 1

2、错误原因

由于向div中添加元素,利用append();

$("#divStyle").append("<div><label>_data[i].name</label></div>");

append里面是动态数据,当请求数据为空时,获取并判断div中的内容:

var divContent = $("#divStyle").html();
if(divContent == null || divContent.length == 0)
{
$("#divStyle").append("<div><img src='/images/head.png'></div>");
}

在判断时始终不进到if里,后来用console调试,发现即使没有数据div内部也有好多空格和换行

3、解决办法

(1)利用JS隐藏法

当判断请求的数据为空时,将无数据提示图片显示,否则隐藏无数据提示图片;

(2)利用JsViews请求数据方法

以上所述本文给大家介绍的关于获取DIV内部内容报错的原因分析及解决办法,希望对大家有所帮助。

MySQLserverhasgoneaway报错原因分析及解决办法

原因1. MySQL 服务宕了

判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长
 

$ mysql -uroot -p -e "show global status like 'uptime';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime | 68928 |
+---------------+-------+
1 row in set (0.04 sec)

或者查看MySQL的报错日志,看看有没有重启的信息

$ tail /var/log/mysql/error.log
130101 22:22:30 InnoDB: Initializing buffer pool, size = 256.0M
130101 22:22:30 InnoDB: Completed initialization of buffer pool
130101 22:22:30 InnoDB: highest supported file format is Barracuda.
130101 22:22:30 InnoDB: 1.1.8 started; log sequence number 63444325509
130101 22:22:30 [Note] Server hostname (bind-address): ‘127.0.0.1’;
port: 3306
130101 22:22:30 [Note] – ‘127.0.0.1’ resolves to ‘127.0.0.1’;
130101 22:22:30 [Note] Server socket created on IP: ‘127.0.0.1’.
130101 22:22:30 [Note] Event Scheduler: Loaded 0 events
130101 22:22:30 [Note] /usr/sbin/mysqld: ready for connections.
Version: ‘5.5.28-cll’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306
MySQL Community Server (GPL)
如果uptime数值很大,表明mysql服务运行了很久了。说明最近服务没有重启过。

如果日志没有相关信息,也表名mysql服务最近没有重启过,可以继续检查下面几项内容。

2. 连接超时

如果程序使用的是长连接,则这种情况的可能性会比较大。

即,某个长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。

此后再通过这个connection发起查询的时候,就会报错server has gone away

$ mysql -uroot -p -e "show global variables like '%timeout';"
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| connect_timeout | 30 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+----------------------------+----------+
mysql> SET SESSION wait_timeout=5;

## Wait 10 seconds

mysql> SELECT NOW();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 132361
Current database: *** NONE ***

+---------------------+
| NOW() |
+---------------------+
| 2013-01-02 11:31:15 |
+---------------------+
1 row in set (0.00 sec)

3. 进程在server端被主动kill

这种情况和情况2相似,只是发起者是DBA或者其他job。发现有长时间的慢查询执行kill
xxx导致。
 

$ mysql -uroot -p -e "show global status like 'com_kill'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_kill | 0 |
+---------------+-------+
  1. Your SQL statement was too large.

当查询的结果集超过 max_allowed_packet
也会出现这样的报错。定位方法是打出相关报错的语句。

用select * into outfile 的方式导出到文件,查看文件大小是否超过
max_allowed_packet ,如果超过则需要调整参数,或者优化语句。
 

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

修改参数:

 

mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+

 

原因1. MySQL 服务宕了
判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长…

这件事可以追溯到w3c规范中的BFC定义:

最近自己找了一个开源的博客网站,放到阿里云上,方便自己发布博客。

图片 2

您可能感兴趣的文章:

  • JS实现div内部的文字或图片自动循环滚动代码

1、错误描述 2、错误原因 由于向div中添加元素,利用append();
$(“#divStyle”).app…

      浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks,
table-cells, 和
table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。

我一般把文章发布到博客园和QQ空间,家了这个网站后又要多发布一次,为了省事就做了一个从博客园读取文章的功能;

2、错误原因

     
 在BFC中,盒子从顶端开始垂直地一个接一个地排列,两个盒子之间的垂直的间隙是由他们的margin
值所决定的。在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。

 

由于向div中添加元素,利用append();

       
在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)。

输入链接URL地址点击提交;

$("#divStyle").append("<div><label>_data[i].name</label></div>");

 图片 3

append里面是动态数据,当请求数据为空时,获取并判断div中的内容:

 

var divContent = $("#divStyle").html();
if(divContent == null || divContent.length == 0)
{
$("#divStyle").append("<div><img src='/images/head.png'></div>");
}

从GetHub安装HtmlAgilityPack

图片 4

在判断时始终不进到if里,后来用console调试,发现即使没有数据div内部也有好多空格和换行

后台C#代码

 

 

public ActionResult LinkBlog(string urlStr)
        {
            Response response = new Response() { Code =1 };
            if (string.IsNullOrWhiteSpace(urlStr))
            {
                response.Code = 0;
                response.Message = "链接URL必填";
                return Json(response);
            }

            WebClient c = new WebClient();
            c.Encoding = Encoding.GetEncoding("UTF-8");
            string html = c.DownloadString(urlStr);

            HtmlDocument doc = new HtmlDocument();
            doc.LoadHtml(html);
            HtmlNode nodeinfo = doc.GetElementbyId("post_detail");

            //post_detail
            //
            HtmlNode nodetitle = doc.GetElementbyId("cb_post_title_url");

            //cnblogs_post_body

            HtmlNode nodecontent = doc.GetElementbyId("cnblogs_post_body");

            string htmlstr = nodeinfo.OuterHtml;

            Blog blog = new Blog();
            blog.Publish = true;
            blog.Title =string.Format("链接文章:{0}", nodetitle.InnerText);
            blog.Volume = 0;
            blog.Content = htmlstr;
            blog.CreateTime = DateTime.Now;
            string htmlsumm = nodecontent.InnerText.Replace(" ", "");
            int sublen = htmlsumm.Length;
            if (sublen > 80)
            {
                sublen = 80;
            }
            blog.Summary = htmlsumm.Substring(0, sublen);

            blog.Category=  categoryManager.FindRoot()[0];
            response = blogManager.AddBlog(blog);

            return Json(response);
        }

 

3、解决办法

应用的技术

 

WebClient c = new WebClient();

            c.Encoding = Encoding.GetEncoding(“UTF-8”);

            string html = c.DownloadString(urlStr);

通过WebClient读取网页,注意这里的编码问题,有的网页用的是UTF-8有的是GB2312

自己尝试一下就知道了,编码设置错误会出现汉子乱码。

 

HtmlDocument doc = new HtmlDocument();

            doc.LoadHtml(html);

            HtmlNode nodeinfo = doc.GetElementbyId(“post_detail”);

 

读取HTML字符串中指定id的标签的内容;

参考博客:

 图片 5

最终我不用再重复添加博客了,不过还多亏博客园没有做图片防盗链,否则图片还要单独处理。

 

(1)利用JS隐藏法

当判断请求的数据为空时,将无数据提示图片显示,否则隐藏无数据提示图片;

(2)利用JsViews请求数据方法

以上所述本文给大家介绍的关于获取DIV内部内容报错的原因分析及解决办法,希望对大家有所帮助。

您可能感兴趣的文章:

  • JS实现div内部的文字或图片自动循环滚动代码

相关文章