﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-午后星期午-随笔分类-Js</title><link>http://www.blogjava.net/wshao/category/54087.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 31 Dec 2013 07:22:26 GMT</lastBuildDate><pubDate>Tue, 31 Dec 2013 07:22:26 GMT</pubDate><ttl>60</ttl><item><title>使用jQuery解析JSON数据</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408291.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408291.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408291.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408291.html</trackback:ping><description><![CDATA[<div class="clear"></div>
<div class="postBody">
<div id="cnblogs_post_body">
<p>在本篇中，我们将使用jQuery进行数据解析。JSON数据如下，是一个嵌套JSON：</p>
<div class="cnblogs_code"><pre><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">comments</span><span style="color: #000000">"</span><span style="color: #000000">:[{</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">很不错嘛</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nickname</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">纳尼</span><span style="color: #000000">"</span><span style="color: #000000">},{</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">哟西哟西</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nickname</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">小强</span><span style="color: #000000">"</span><span style="color: #000000">}]}</span></pre></div>
<p>获取JSON数据，在jQuery中有一个简单的方法 $.getJSON() 可以实现。</p>
<p>下面引用的是官方API对$.getJSON()的说明：</p>
<h4 class="name">jQuery.getJSON( url, [data,] [success(data, textStatus, jqXHR)] )</h4>
<p class="arguement"><strong>url</strong>A string containing the URL to which the request is sent.</p>
<p class="arguement"><strong>data</strong>A map or string that is sent to the server with the request.</p>
<p class="arguement"><strong>success(data, textStatus, jqXHR)</strong>A callback function that is executed if the request succeeds.</p>
<p class="arguement">回调函数中接受三个参数，第一个书返回的数据，第二个是状态，第三个是jQuery的XMLHttpRequest，我们只使用到第一个参数。</p>
<p>$.each()是用来在回调函数中解析JSON数据的方法，下面是官方文档：</p>
<h4 class="name">jQuery.each( collection, callback(indexInArray, valueOfElement) )</h4>
<p class="arguement"><strong>collection</strong>The object or array to iterate over.</p>
<p class="arguement"><strong>callback(indexInArray, valueOfElement)</strong>The function that will be executed on every object.</p>
<p>$.each()方法接受两个参数，第一个是需要遍历的对象集合（JSON对象集合），第二个是用来遍历的方法，这个方法又接受两个参数，第一个是遍历的index，第二个是当前遍历的值。哈哈，有了$.each()方法JSON的解析就迎刃而解咯。(*^__^*) 嘻嘻&#8230;&#8230;</p>
<p>&nbsp;</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码" onclick="copyCnblogsCode(this)" href="javascript:void(0);"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></span></div><pre><span>function</span><span> loadInfo() {<br />    $.getJSON(</span><span>"</span><span>loadInfo</span><span>"</span><span>, </span><span>function</span><span>(data) {<br />        $(</span><span>"</span><span>#info</span><span>"</span><span>).html(</span><span>""</span><span>);</span><span>//</span><span>清空info内容</span><span><br /></span><span>        $.each(data.comments, </span><span>function</span><span>(i, item) {<br />            $(</span><span>"</span><span>#info</span><span>"</span><span>).append(<br />                    </span><span>"</span><span>&lt;div&gt;</span><span>"</span><span> </span><span>+</span><span> item.id </span><span>+</span><span> </span><span>"</span><span>&lt;/div&gt;</span><span>"</span><span> </span><span>+</span><span> <br />                    </span><span>"</span><span>&lt;div&gt;</span><span>"</span><span> </span><span>+</span><span> item.nickname    </span><span>+</span><span> </span><span>"</span><span>&lt;/div&gt;</span><span>"</span><span> </span><span>+</span><span><br />                    </span><span>"</span><span>&lt;div&gt;</span><span>"</span><span> </span><span>+</span><span> item.content </span><span>+</span><span> </span><span>"</span><span>&lt;/div&gt;&lt;hr/&gt;</span><span>"</span><span>);<br />        });<br />        });<br />}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码" onclick="copyCnblogsCode(this)" href="javascript:void(0);"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></span></div></div>
<p>正如上面，loadinfo是请求的地址，function(data){...}就是在请求成功后的回调函数，data封装了返回的JSON对象，在下面的$.each(data.comments,function(i,item){...})方法中data.comments直接到达 JSON数据内包含的JSON数组：</p>
<div class="cnblogs_code"><pre><span style="color: #000000">[{</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">很不错嘛</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nickname</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">纳尼</span><span style="color: #000000">"</span><span style="color: #000000">},{</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">哟西哟西</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nickname</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">小强</span><span style="color: #000000">"</span><span style="color: #000000">}]</span></pre></div>
<p>$.each()方法中的function就是对这个数组进行遍历，再通过操作DOM插入到合适的地方的。在遍历的过程中，我们可以很方便的访问当前遍历index(代码中的&#8221;i&#8220;)和当前遍历的值(代码中的&#8221;item&#8220;)。</p>
<p>上例的运行结果如下：</p>
<p><img alt="" src="http://pic002.cnblogs.com/images/2011/315806/2011071815063112.jpg" /></p>
<p>如果返回的JSON数据比较复杂，则只需多些$.each()进行遍历即可，嘿嘿。例如如下JSON数据：</p>
<div class="cnblogs_code"><pre><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">comments</span><span style="color: #000000">"</span><span style="color: #000000">:[{</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">很不错嘛</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nickname</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">纳尼</span><span style="color: #000000">"</span><span style="color: #000000">},{</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">哟西哟西</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">id</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nickname</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">小强</span><span style="color: #000000">"</span><span style="color: #000000">}],</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">你是木头人，哈哈。</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">infomap</span><span style="color: #000000">"</span><span style="color: #000000">:{</span><span style="color: #000000">"</span><span style="color: #000000">性别</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">男</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">职业</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">程序员</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">博客</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">http:\/\/www.cnblogs.com\/codeplus\/</span><span style="color: #000000">"</span><span style="color: #000000">},</span><span style="color: #000000">"</span><span style="color: #000000">title</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">"</span><span style="color: #000000">123木头人</span><span style="color: #000000">"</span><span style="color: #000000">}</span></pre></div>
<p>js如下：</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码" onclick="copyCnblogsCode(this)" href="javascript:void(0);"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></span></div><pre><span style="color: #0000ff">function</span><span style="color: #000000"> loadInfo() {<br />    $.getJSON(</span><span style="color: #000000">"</span><span style="color: #000000">loadInfo</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #0000ff">function</span><span style="color: #000000">(data) {<br />        $(</span><span style="color: #000000">"</span><span style="color: #000000">#title</span><span style="color: #000000">"</span><span style="color: #000000">).append(data.title</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;hr/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        $(</span><span style="color: #000000">"</span><span style="color: #000000">#content</span><span style="color: #000000">"</span><span style="color: #000000">).append(data.content</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;hr/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        </span><span style="color: #008000">//</span><span style="color: #008000">jquery解析map数据</span><span style="color: #008000"><br /></span><span style="color: #000000">        $.each(data.infomap,</span><span style="color: #0000ff">function</span><span style="color: #000000">(key,value){<br />            $(</span><span style="color: #000000">"</span><span style="color: #000000">#mapinfo</span><span style="color: #000000">"</span><span style="color: #000000">).append(key</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">----</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">value</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br/&gt;&lt;hr/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        });<br />        </span><span style="color: #008000">//</span><span style="color: #008000">解析数组</span><span style="color: #008000"><br /></span><span style="color: #000000">        $.each(data.comments, </span><span style="color: #0000ff">function</span><span style="color: #000000">(i, item) {<br />            $(</span><span style="color: #000000">"</span><span style="color: #000000">#info</span><span style="color: #000000">"</span><span style="color: #000000">).append(<br />                    </span><span style="color: #000000">"</span><span style="color: #000000">&lt;div&gt;</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> item.id </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">&lt;/div&gt;</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> <br />                    </span><span style="color: #000000">"</span><span style="color: #000000">&lt;div&gt;</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> item.nickname    </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">&lt;/div&gt;</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"><br />                    </span><span style="color: #000000">"</span><span style="color: #000000">&lt;div&gt;</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> item.content </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">&lt;/div&gt;&lt;hr/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />        });<br />        });<br />}</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a title="复制代码" onclick="copyCnblogsCode(this)" href="javascript:void(0);"><img alt="复制代码" src="http://common.cnblogs.com/images/copycode.gif" /></a></span></div></div>
<p>值得注意的是，$.each()遍历Map的时候，function()中的参数是key和value，十分方便。</p>
<p>上例的运行效果：</p>
<p><img alt="" src="http://pic002.cnblogs.com/images/2011/315806/2011071815051458.jpg" /></p>
<p>jQuery很强大，so...更多的了解还得参考文档，(ˇˍˇ） 想～</p></div></div><img src ="http://www.blogjava.net/wshao/aggbug/408291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:29 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重复提交、重复刷新、防止后退的问题以及处理方式</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408287.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408287.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408287.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408287.html</trackback:ping><description><![CDATA[<p><span id="ArticleContent1_ArticleContent1_lblContent">重复提交、重复刷新、防止后退的问题以及处理方式</span></p>
<p>一。前言<br />你在任何一个比较专业的BBS都会看到这样的问题，即使你Google一下，也会发现有很多的人在关注和询问，但大家给出的解决方法却都是千差万别，（有的人主张采用脚本来解决;有的则想重定向到别的页面;有的则将此问题提升到Token的角度）为什么会有如此大的差异呢？</p>
<p>二。问题场景<br />首先，我们应该先了解为什么要处理这样的问题？或者专业一点就是它适合的场景是什么？（似乎只有人来问没有人来解释）</p>
<p>1。重复提交、重复刷新的场景<br />重复提交、重复刷新都是来解决系统重复记录的问题。也就是说某个人在多次的提交某条记录（为什么？也许是闲了没有事情干的;最有可能是用户根本就不知道自己的提交结果是否已经执行了？！）。</p>
<p>但出现了这样的问题并不见得就必须处理，要看你所开发的系统的类别而定。比如你接手的是某个资源管理系统，系统本身从需求的角度根本就不允许出现" 重复"的记录，在这样需求的约束条件下，去执行重复的提交动作只会引发&#8220;业务级异常&#8221;的产生，根本就不可能执行成功也就无所谓避免不避免的问题了。</p>
<p>&nbsp;</p>
<p>2。防止后退的场景<br />了解了重复刷新、重复提交的场景，我们来了解一下"防止后退"操作的原因是什么？比如你在开发某个投票系统，它有很多的步骤，并且这些步骤之间是有联系的，比如第一步会将某些信息发送给第二步，第二步缓存了这些信息，同时将自身的信息发送给了第三步。。。。。等等，如果此时用户处在第三步骤下，我们想象一下某个淘气用户的用户点击了后退按钮，此时屏幕出现了第二步骤的页面，他再次的修改或者再次的提交，进入到下一个步骤（也就是第三步骤），错误就会在此产生？！什么错误呢？最为典型的就是这样的操作直接导致了对于第一个步骤信息的丢失！（如果这样的信息是依靠Request存放的话，当然你可以存放在 Session或者更大的上下文环境中，但这不是个好主意！关于信息存放的问题，下次在就这个问题详细的讨论）</p>
<p><br />三。如何处理的问题<br />当然很多的系统（比如订票系统从需求上本身是允许个人重复订票的）是必须要避免重复刷新、重复提交、以及防止后退的问题的，但即使是这样的问题，也要区分如何处理以及在哪里处理的（网上只是告诉你如何处理，但很少去区分在哪里处理的），显然处理的方式无非是客户端或者服务器端两种，而面对不同的位置处理的方式也是不同的，但有一点要事先声明：任何客户端（尤其是B/S端）的处理都是不可信任的，最好的也是最应该的是服务器端的处理方法。</p>
<p>客户端处理：<br />面对客户端我们可以使用Javascript脚本来解决，如下</p>
<p>1。重复刷新、重复提交<br />Ways One：设置一个变量，只允许提交一次。<br />&lt;script language="javascript"&gt; <br />&nbsp;&nbsp;&nbsp; var checkSubmitFlg = false; <br />&nbsp;&nbsp;&nbsp; function checkSubmit() { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (checkSubmitFlg == true) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; checkSubmitFlg = true; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true; <br />&nbsp;&nbsp; } <br />&nbsp;&nbsp; document.ondblclick = function docondblclick() { <br />&nbsp;&nbsp;&nbsp; window.event.returnValue = false; <br />&nbsp;&nbsp; } <br />&nbsp;&nbsp; document.onclick = function doconclick() { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (checkSubmitFlg) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.event.returnValue = false; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp; } <br />&lt;/script&gt; <br />&lt;html:form action="myAction.do" method="post" onsubmit="return checkSubmit();"&gt;</p>
<p>Way Two : 将提交按钮或者image置为disable<br />&nbsp; &lt;html:form action="myAction.do" method="post"&nbsp; <br />&nbsp;&nbsp;&nbsp; onsubmit="getElById('submitInput').disabled = true; return true;"&gt;&nbsp;&nbsp; <br />&nbsp; &lt;html:image styleId="submitInput" src="images/ok_b.gif" border="0" /&gt; <br />&nbsp; &lt;/html:form&gt;&nbsp; </p>
<p>2。防止用户后退<br />这里的方法是千姿百态，有的是更改浏览器的历史纪录的，比如使用window.history.forward()方法;有的是&#8220;用新页面的URL替换当前的历史纪录，这样浏览历史记录中就只有一个页面，后退按钮永远不会变为可用。&#8221;比如使用 javascript:location.replace(this.href); event.returnValue=false; </p>
<p><br />2.服务器端的处理（这里只说Struts框架的处理）<br />利用同步令牌（Token）机制来解决Web应用中重复提交的问题，Struts也给出了一个参考实现。</p>
<p>基本原理：<br />服务器端在处理到达的请求之前，会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较，<br />看是否匹配。在处理完该请求后，且在答复发送给客户端之前，将会产生一个新的令牌，该令牌除传给<br />客户端以外，也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次<br />提交的话，客户端传过来的令牌就和服务器端的令牌不一致，从而有效地防止了重复提交的发生。</p>
<p>if (isTokenValid(request, true)) { <br />&nbsp;&nbsp;&nbsp; // your code here <br />&nbsp;&nbsp;&nbsp; return mapping.findForward("success"); <br />} else { <br />&nbsp;&nbsp;&nbsp; saveToken(request); <br />&nbsp;&nbsp;&nbsp; return mapping.findForward("submitagain"); <br />} </p>
<p>Struts根据用户会话ID和当前系统时间来生成一个唯一（对于每个会话）令牌的，具体实现可以参考<br />TokenProcessor类中的generateToken()方法。</p>
<p>1. //验证事务控制令牌,&lt;html:form &gt;会自动根据session中标识生成一个隐含input代表令牌，防止两次提交<br />2. 在action中：</p>
<p><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&lt;input type="hidden" name="org.apache.struts.taglib.html.TOKEN"&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; value="6aa35341f25184fd996c4c918255c3ae"&gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!isTokenValid(request)) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errors.add(ActionErrors.GLOBAL_ERROR, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new ActionError("error.transaction.token")); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resetToken(request); //删除session中的令牌 </p>
<p>3. action有这样的一个方法生成令牌<br />&nbsp;&nbsp; protected String generateToken(HttpServletRequest request) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session = request.getSession(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte id[] = session.getId().getBytes(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte now[] = <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Long(System.currentTimeMillis()).toString().getBytes(); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageDigest md = MessageDigest.getInstance("MD5"); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; md.update(id); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; md.update(now); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (toHex(md.digest())); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IllegalStateException e) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (null); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (NoSuchAlgorithmException e) { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (null); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp; }&nbsp; </p>
<p>总结<br />对于重复提交、重复刷新、防止后退等等都是属于系统为避免重复记录而需要解决的问题，在客户端去处理需要针对每一种的可能提出相应的解决方案，然而在服务器端看来只不过是对于数据真实性的检验问题，基于令牌的处理就是一劳永逸的方法。</p>
<p>同时我们也看到，从不同的角度去看待问题，其解决的方法也是不同的。客户端更追求的是用户的操作，而服务端则将注意力放在了数据的处理上，所以在某个对于服务器端看似容易的问题上，用客户端来解决却麻烦了很多！反之依然。所以在某些问题的处理上我们需要综合考虑和平衡，是用客户端来解决？还是用服务器端来处理？<br /><br />[转载出处] <a id="ArticleContent1_ArticleContent1_AuthorBlogLink" href="http://blog.csdn.net/Killvin/" target="_blank">http://blog.csdn.net/Killvin/</a></p><img src ="http://www.blogjava.net/wshao/aggbug/408287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:25 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 增，删，查，改 cookies</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408286.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408286.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408286.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408286.html</trackback:ping><description><![CDATA[&lt;script&gt;<br /><br />//写cookies函数 作者：翟振凯<br />function SetCookie(name,value)//两个参数，一个是cookie的名子，一个是值<br />{<br />&nbsp;&nbsp;&nbsp; var Days = 30; //此 cookie 将被保存 30 天<br />&nbsp;&nbsp;&nbsp; var exp&nbsp; = new Date();&nbsp;&nbsp;&nbsp; //new Date("December 31, 9998");<br />&nbsp;&nbsp;&nbsp; exp.setTime(exp.getTime() + Days*24*60*60*1000);<br />&nbsp;&nbsp;&nbsp; document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();<br />}<br />function getCookie(name)//取cookies函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />{<br />&nbsp;&nbsp;&nbsp; var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));<br />&nbsp;&nbsp;&nbsp;&nbsp; if(arr != null) return unescape(arr[2]); return null;<br /><br />}<br />function delCookie(name)//删除cookie<br />{<br />&nbsp;&nbsp;&nbsp; var exp = new Date();<br />&nbsp;&nbsp;&nbsp; exp.setTime(exp.getTime() - 1);<br />&nbsp;&nbsp;&nbsp; var cval=getCookie(name);<br />&nbsp;&nbsp;&nbsp; if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();<br />}<br /><br /><br /><br />SetCookie ("xiaoqi", "3")<br />alert(getCookie('xiaoqi'));<br />&lt;/script&gt;<br /><br />一个非常实用的javascript读写Cookie函数<br /><br />一个非常实用的javascript读写Cookie函数&nbsp; <br />function&nbsp; GetCookieVal(offset)<br />//获得Cookie解码后的值<br />{<br />var&nbsp; endstr&nbsp; =&nbsp; documents.cookie.indexOf&nbsp; (";",&nbsp; offset);<br />if&nbsp; (endstr&nbsp; ==&nbsp; -1)<br />endstr&nbsp; =&nbsp; documents.cookie.length;<br />return&nbsp; unescape(documents.cookie.substring(offset,&nbsp; endstr));<br />}<br />function&nbsp; SetCookie(name,&nbsp; value)<br />//设定Cookie值<br />{<br />var&nbsp; expdate&nbsp; =&nbsp; new&nbsp; Date();<br />var&nbsp; argv&nbsp; =&nbsp; SetCookie.arguments;<br />var&nbsp; argc&nbsp; =&nbsp; SetCookie.arguments.length;<br />var&nbsp; expires&nbsp; =&nbsp; (argc&nbsp; &gt;&nbsp; 2)&nbsp; ?&nbsp; argv[2]&nbsp; :&nbsp; null;<br />var&nbsp; path&nbsp; =&nbsp; (argc&nbsp; &gt;&nbsp; 3)&nbsp; ?&nbsp; argv[3]&nbsp; :&nbsp; null;<br />var&nbsp; domain&nbsp; =&nbsp; (argc&nbsp; &gt;&nbsp; 4)&nbsp; ?&nbsp; argv[4]&nbsp; :&nbsp; null;<br />var&nbsp; secure&nbsp; =&nbsp; (argc&nbsp; &gt;&nbsp; 5)&nbsp; ?&nbsp; argv[5]&nbsp; :&nbsp; false;<br />if(expires!=null)&nbsp; expdate.setTime(expdate.getTime()&nbsp; +&nbsp; (&nbsp; expires&nbsp; *&nbsp; 1000&nbsp; ));<br />documents.cookie&nbsp; =&nbsp; name&nbsp; +&nbsp; "="&nbsp; +&nbsp; escape&nbsp; (value)&nbsp; +((expires&nbsp; ==&nbsp; null)&nbsp; ?&nbsp; ""&nbsp; :&nbsp; (";&nbsp; expires="+&nbsp; expdate.toGMTString()))<br />+((path&nbsp; ==&nbsp; null)&nbsp; ?&nbsp; ""&nbsp; :&nbsp; (";&nbsp; path="&nbsp; +&nbsp; path))&nbsp; +((domain&nbsp; ==&nbsp; null)&nbsp; ?&nbsp; ""&nbsp; :&nbsp; (";&nbsp; domain="&nbsp; +&nbsp; domain))<br />+((secure&nbsp; ==&nbsp; true)&nbsp; ?&nbsp; ";&nbsp; secure"&nbsp; :&nbsp; "");<br />}<br />function&nbsp; DelCookie(name)<br />//删除Cookie<br />{<br />var&nbsp; exp&nbsp; =&nbsp; new&nbsp; Date();<br />exp.setTime&nbsp; (exp.getTime()&nbsp; -&nbsp; 1);<br />var&nbsp; cval&nbsp; =&nbsp; GetCookie&nbsp; (name);<br />documents.cookie&nbsp; =&nbsp; name&nbsp; +&nbsp; "="&nbsp; +&nbsp; cval&nbsp; +&nbsp; ";&nbsp; expires="+&nbsp; exp.toGMTString();<br />}<br />function&nbsp; GetCookie(name)<br />//获得Cookie的原始值<br />{<br />var&nbsp; arg&nbsp; =&nbsp; name&nbsp; +&nbsp; "=";<br />var&nbsp; alen&nbsp; =&nbsp; arg.length;<br />var&nbsp; clen&nbsp; =&nbsp; documents.cookie.length;<br />var&nbsp; i&nbsp; =&nbsp; 0;<br />while&nbsp; (i&nbsp; &lt;&nbsp; clen)<br />{<br />var&nbsp; j&nbsp; =&nbsp; i&nbsp; +&nbsp; alen;<br />if&nbsp; (documents.cookie.substring(i,&nbsp; j)&nbsp; ==&nbsp; arg)<br />return&nbsp; GetCookieVal&nbsp; (j);<br />i&nbsp; =&nbsp; documents.cookie.indexOf("&nbsp; ",&nbsp; i)&nbsp; +&nbsp; 1;<br />if&nbsp; (i&nbsp; ==&nbsp; 0)&nbsp; break;<br />}<br />return&nbsp; null;<br />}<br /><br /><br />&lt;SCRIPT&nbsp; language="javascript"&gt;<br />&lt;!--<br />function&nbsp; openpopup(){<br />url="popup.htm"<br />window.open("gonggao.htm","gonggao","width=260,height=212,left=200,top=0")<br />}<br /><br />function&nbsp; get_cookie(Name)&nbsp; {<br />var&nbsp; search&nbsp; =&nbsp; Name&nbsp; +&nbsp; "="<br />var&nbsp; returnvalue&nbsp; =&nbsp; "";<br />if&nbsp; (documents.cookie.length&nbsp; &gt;&nbsp; 0)&nbsp; {<br />offset&nbsp; =&nbsp; documents.cookie.indexOf(search)<br />if&nbsp; (offset&nbsp; !=&nbsp; -1)&nbsp; {<br />offset&nbsp; +=&nbsp; search.length<br />end&nbsp; =&nbsp; documents.cookie.indexOf(";",&nbsp; offset);<br />if&nbsp; (end&nbsp; ==&nbsp; -1)<br />end&nbsp; =&nbsp; documents.cookie.length;<br />returnvalue=unescape(documents.cookie.substring(offset,&nbsp; end))<br />}<br />}<br />return&nbsp; returnvalue;<br />}<br /><br />function&nbsp; helpor_net(){<br />if&nbsp; (get_cookie('popped')==''){<br />openpopup()<br />documents.cookie="popped=yes"<br />}<br />}<br />helpor_net()<br />//--&gt;<br />&lt;/SCRIPT&gt;<br /><br /><br />如果点了确定，只要不清cookie，以后访问都不会再提示，如果不点确定则每次都会提示。放在js文件里，全站包含<br /><br />&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />&lt;!--<br />var the_cookie = document.cookie;<br />var broken_cookie = the_cookie.split(":");<br />var the_visiteraccepted = unescape(broken_cookie[1]);<br />//<br />if (the_visiteraccepted=="undefined"){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var tmp=confirm('中国人何时何地。');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(tmp==false){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var the_visiteraccepted = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var the_cookie = "ILoveChina=visiteraccepted:" + escape(the_visiteraccepted);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.cookie = the_cookie;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />}<br />//--&gt;<br />&lt;/SCRIPT&gt;<br /><br /><br />1. Cookie的兼容性问题<br /><br />Cookie的格式有2个不同的版本，第一个版本，我们称为Cookie Version 0，是最初由Netscape公司制定的，也被几乎所有的浏览器支持。而较新的版本，Cookie Version 1，则是根据RFC 2109文档制定的。为了确保兼容性，JAVA规定，前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。<br /><br />2. Cookie的内容<br /><br />同样的 Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中，某些特殊的字符，例如：空格，方括号，圆括号，等于号（=），逗号，双引号，斜杠，问号，@符号，冒号，分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为"Test_Content"的原因。<br /><br />虽然在Cookie Version 1规定中放宽了限制，可以使用这些字符，但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持，因而为保险起见，我们应该在Cookie的内容中尽量避免使用这些字符<img src ="http://www.blogjava.net/wshao/aggbug/408286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:23 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript中json对象和string对象之间的转化</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408281.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408281.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408281.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408281.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408281.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408281.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">
<p>json对象<br />var json = {aa:true,bb:true};<br />var json1 = {aa:'b',bb:{cc:true,dd:true}};<br />1：js操作json对象<br />&nbsp;&nbsp; for(var item in json){<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert(item);&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //结果是 aa,bb, 类型是 string<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert(typeof(item));<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert(ev<wbr>al("json."+item));&nbsp;&nbsp; //结果是true，true类型是boolean<br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ev<wbr>al(("json."+item+"=false;"));&nbsp;&nbsp; //改变json对象的值<br />&nbsp;&nbsp; }<br /><br />2：json对象转化为String对象的方法<br /><font color="#008080">1</font> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/*</span><span style="color: #008000">*<br /></span><span style="color: #008080">2</span> <span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * json对象转字符串形式<br /></span><span style="color: #008080">3</span> <span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br /></span><span style="color: #008080">4</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000"> json2str(o) {<br /></span><span style="color: #008080">5</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> arr </span><span style="color: #000000">=</span><span style="color: #000000"> [];<br /></span><span style="color: #008080">6</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> fmt </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">(s) {<br /></span><span style="color: #008080">7</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #0000ff">typeof</span><span style="color: #000000"> s </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">object</span><span style="color: #000000">'</span><span style="color: #000000"> </span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000"> s </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) </span><span style="color: #0000ff">return</span><span style="color: #000000"> json2str(s);<br /></span><span style="color: #008080">8</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">/</span><span style="color: #000000">^(string|number)$</span><span style="color: #000000">/</span><span style="color: #000000">.test(</span><span style="color: #0000ff">typeof</span><span style="color: #000000"> s) </span><span style="color: #000000">?</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> s </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000"> : s;<br /></span><span style="color: #008080">9</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /></span><span style="color: #008080">10</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #0000ff">in</span><span style="color: #000000"> o) arr.push(</span><span style="color: #000000">"</span><span style="color: #000000">'</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> i </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">':</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> fmt(o[i]));<br /></span><span style="color: #008080">11</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">{</span><span style="color: #000000">'</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> arr.join(</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">) </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">'</span><span style="color: #000000">}</span><span style="color: #000000">'</span><span style="color: #000000">;<br /></span><span style="color: #008080">12</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><br />3:string对象转化为json对象<br />function stringToJson(stringValue)<br />{<br />&nbsp;&nbsp; ev<wbr>al("var theJsonValue = "+stringValue);<br />&nbsp;&nbsp; return theJsonValue;<br />}<br /><br />4:json数组转化为 String对象的方法（要掉要上面那个方法）<br />function JsonArrayToStringCfz(jsonArray)<br /><br />&nbsp;&nbsp; var JsonArrayString = "[";<br />&nbsp;&nbsp; for(var i=0;i&lt;jsonArray.length;i++){<br />&nbsp;&nbsp; JsonArrayString=JsonArrayString+JsonToStringCfz(jsonArray[i])+",";<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; JsonArrayString = JsonArrayString.substring(0,JsonArrayString.length-1)+"]";<br />&nbsp;&nbsp; return JsonArrayString;<br />}<br />5 利用json.js json转string</p>
<p>&lt;script src="json2.js"&gt;&lt;/script&gt;<br />&lt;script&gt;<br />var date = {myArr : ["a" , "b" , "c" , "d"] , count : 4};<br />var str = JSON.stringify(date);<br />alert(str);<br />&lt;/script&gt;</p></div><img src ="http://www.blogjava.net/wshao/aggbug/408281.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:20 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408281.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS计算包含英文与汉字的字符串长度(一个汉字=2个字节)</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408272.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408272.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408272.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408272.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408272.html</trackback:ping><description><![CDATA[function coun<a style="color: #000000" href="http://www.tbwshc.com/">tb</a>Characters(str)<br />{<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> var totalCount = 0;<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> for (var i=0; i&lt;str.length; i++)<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>{<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> var c = str.charCodeAt(i);<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> if ((c &gt;= 0x0001 &amp;&amp; c &lt;= 0x007e) || (0xff60&lt;=c &amp;&amp; c&lt;=0xff9f))<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>{<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> totalCount++;<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>else<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> totalCount+=2;<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> }<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> return totalCount;<br />} <img src ="http://www.blogjava.net/wshao/aggbug/408272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:06 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS截取字符长度（按字节）</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408270.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408270.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408270.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408270.html</trackback:ping><description><![CDATA[<ol><li><span>&nbsp;<wbr>*&nbsp;<wbr>处理过长的字符串，截取并添加省略号</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>注：半角长度为1，全角长度为2</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr></span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>pStr:字符串</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>pLen:截取长度</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr></span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>return:&nbsp;<wbr>截取后的字符串</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*</span><span><br /></span></li><li><span>function</span><span>&nbsp;<wbr>autoAddEllipsis(pStr,&nbsp;<wbr>pLen)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_ret&nbsp;<wbr>=&nbsp;<wbr>cutString(pStr,&nbsp;<wbr>pLen);&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_cutFlag&nbsp;<wbr>=&nbsp;<wbr>_ret.cutflag;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_cutStringn&nbsp;<wbr>=&nbsp;<wbr>_ret.cutstring;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(</span><span>"1"</span><span>&nbsp;<wbr>==&nbsp;<wbr>_cutFlag)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>return</span><span>&nbsp;<wbr>_cutStringn&nbsp;<wbr>+&nbsp;<wbr></span><span>"..."</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr><span>else</span><span>&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>return</span><span>&nbsp;<wbr>_cutStringn;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>*</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>取得指定长度的字符串</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>注：半角长度为1，全角长度为2</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr></span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>pStr:字符串</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>pLen:截取长度</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr></span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>return:&nbsp;<wbr>截取后的字符串</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*</span><span><br /></span></li><li><span>function</span><span>&nbsp;<wbr>cutString(pStr,&nbsp;<wbr>pLen)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>//&nbsp;<wbr>原字符串长度</span><span>&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_strLen&nbsp;<wbr>=&nbsp;<wbr>pStr.length;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_tmpCode;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_cutString;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>//&nbsp;<wbr>默认情况下，返回的字符串是原字符串的一部分</span><span>&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_cutFlag&nbsp;<wbr>=&nbsp;<wbr></span><span>"1"</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_lenCount&nbsp;<wbr>=&nbsp;<wbr>0;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>var</span><span>&nbsp;<wbr>_ret&nbsp;<wbr>=&nbsp;<wbr></span><span>false</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(_strLen&nbsp;<wbr>&lt;=&nbsp;<wbr>pLen/2)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_cutString&nbsp;<wbr>=&nbsp;<wbr>pStr;&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_ret&nbsp;<wbr>=&nbsp;<wbr><span>true</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(!_ret)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>for</span><span>&nbsp;<wbr>(</span><span>var</span><span>&nbsp;<wbr>i&nbsp;<wbr>=&nbsp;<wbr>0;&nbsp;<wbr>i&nbsp;<wbr>&lt;&nbsp;<wbr>_strLen&nbsp;<wbr>;&nbsp;<wbr>i++&nbsp;<wbr>)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(isFull(pStr.charAt(i)))&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_lenCount&nbsp;<wbr>+=&nbsp;<wbr>2;&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr><span>else</span><span>&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_lenCount&nbsp;<wbr>+=&nbsp;<wbr>1;&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(_lenCount&nbsp;<wbr>&gt;&nbsp;<wbr>pLen)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_cutString&nbsp;<wbr>=&nbsp;<wbr>pStr.substring(0,&nbsp;<wbr>i);&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_ret&nbsp;<wbr>=&nbsp;<wbr><span>true</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>break</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr><span>else</span><span>&nbsp;<wbr></span><span>if</span><span>&nbsp;<wbr>(_lenCount&nbsp;<wbr>==&nbsp;<wbr>pLen)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_cutString&nbsp;<wbr>=&nbsp;<wbr>pStr.substring(0,&nbsp;<wbr>i&nbsp;<wbr>+&nbsp;<wbr>1);&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_ret&nbsp;<wbr>=&nbsp;<wbr><span>true</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>break</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(!_ret)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_cutString&nbsp;<wbr>=&nbsp;<wbr>pStr;&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_ret&nbsp;<wbr>=&nbsp;<wbr><span>true</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>(_cutString.length&nbsp;<wbr>==&nbsp;<wbr>_strLen)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>_cutFlag&nbsp;<wbr>=&nbsp;<wbr><span>"0"</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>return</span><span>&nbsp;<wbr>{</span><span>"cutstring"</span><span>:_cutString,&nbsp;<wbr></span><span>"cutflag"</span><span>:_cutFlag};&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>}&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>*</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>判断是否为全角</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr></span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>pChar:长度为1的字符串</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>return:&nbsp;<a style="color: #000000" href="http://www.tbwshc.com/">tb</a><wbr>true:全角</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>false:半角</span>&nbsp;<wbr></li><li><span>&nbsp;<wbr>*</span><span>&nbsp;<wbr><br /></span></li><li><br /></li><li><span>&nbsp;<wbr>&nbsp;<wbr></span></li><li><span>function</span><span>&nbsp;<wbr>isFull&nbsp;<wbr>(pChar)&nbsp;<wbr>{&nbsp;<wbr><br /></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr><span>for</span><span>&nbsp;<wbr>(</span><span>var</span><span>&nbsp;<wbr>i&nbsp;<wbr>=&nbsp;<wbr>0;&nbsp;<wbr>i&nbsp;<wbr>&lt;</span></span> <span>pChar.</span><span>strLen&nbsp;<wbr>;&nbsp;<wbr>i++&nbsp;<wbr>)&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> <span><br /></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>if</span><span>&nbsp;<wbr>((pChar.charCodeAt(i)&nbsp;<wbr>&gt;&nbsp;<wbr>128))&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>return</span><span>&nbsp;<wbr></span><span>true</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr><span>else</span><span>&nbsp;<wbr>{&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr><span>return</span><span>&nbsp;<wbr></span><span>false</span><span>;&nbsp;<wbr>&nbsp;<wbr></span></span></li><li><span>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>}&nbsp;<wbr><br /></span></li><li><span>}<br /></span></li><li><span>}<br /></span></li><li><span>用例：</span></li><li>testStr = "测试1字符串";<br />autoAddEllipsis(testStr, 1); // "测..."<br />autoAddEllipsis(testStr, 2); // "测..."<br />autoAddEllipsis(testStr, 3); // "测..."<br />autoAddEllipsis(testStr, 4); // "测试..."<br />autoAddEllipsis(testStr, 5); // "测试1..."<br />autoAddEllipsis(testStr, 6); // "测试1..."<br />autoAddEllipsis(testStr, 7); // "测试1字..." </li></ol><img src ="http://www.blogjava.net/wshao/aggbug/408270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:04 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS 获取字符串长度，截取字符串（中英文，一个汉字相当于2个字符）</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408271.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408271.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408271.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408271.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408271.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408271.html</trackback:ping><description><![CDATA[&lt;script type="text/javascript"&gt;<br />//一个汉字相当于2个字符<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>function get_length(s){<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>var char_length = 0;<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>for (var i = 0; i &lt; s.length; i++){<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>var son_char = s.charAt(i);<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>encodeURI(son_char).length &gt; 2 ? char_length += 1 : char_length += 0.5;<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>}<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>return char_length;<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>}<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>function cut_str(s<a style="color: #000000" href="http://www.tbwshc.com/">tb</a>r, len){<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>var char_length = 0;<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>for (var i = 0; i &lt; str.length; i++){<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>var son_str = str.charAt(i);<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>encodeURI(son_str).length &gt; 2 ? char_length += 1 : char_length += 0.5;<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>if (char_length &gt;= len){<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>var sub_len = char_length == len ? i+1 : i;<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>return str.substr(0, sub_len);<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>break;<br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;&nbsp;<wbr>}<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>}<br />&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>}<br />//&nbsp;<wbr> 截取15个字（30个字符）<br />//&nbsp;<wbr> cut_str('aa啊啊啊啊啊啊啊啊啊啊啊啊啊k的啊是', 15);<br />&lt;/script&gt;<img src ="http://www.blogjava.net/wshao/aggbug/408271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 14:04 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>忘掉jQuery，使用JavaScript原生API</title><link>http://www.blogjava.net/wshao/archive/2013/12/31/408264.html</link><dc:creator>午后星期午</dc:creator><author>午后星期午</author><pubDate>Tue, 31 Dec 2013 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/wshao/archive/2013/12/31/408264.html</guid><wfw:comment>http://www.blogjava.net/wshao/comments/408264.html</wfw:comment><comments>http://www.blogjava.net/wshao/archive/2013/12/31/408264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshao/comments/commentRss/408264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshao/services/trackbacks/408264.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jQuery 目前已经成为最流行的JavaScript库，它可以让开发者&#8220;write less, do more（写得更少，做得更多）&#8221;，这也是它的核心理念。通过它，用户可以更方便地处理HTML documents、events，更轻松地实现动画效果、AJAX交互等。&nbsp; 尽管jQuery帮助开发者节省了大量的工作，但是并不是所有的产品都适合使用jQuery。jQu...&nbsp;&nbsp;<a href='http://www.blogjava.net/wshao/archive/2013/12/31/408264.html'>阅读全文</a><img src ="http://www.blogjava.net/wshao/aggbug/408264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshao/" target="_blank">午后星期午</a> 2013-12-31 13:55 <a href="http://www.blogjava.net/wshao/archive/2013/12/31/408264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>