﻿<?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-憨厚生-随笔分类-ajax</title><link>http://www.blogjava.net/hulizhong/category/21838.html</link><description>----Java's Slave----&lt;br&gt;
***Java's Host***</description><language>zh-cn</language><lastBuildDate>Tue, 08 Jun 2010 08:00:50 GMT</lastBuildDate><pubDate>Tue, 08 Jun 2010 08:00:50 GMT</pubDate><ttl>60</ttl><item><title>readyState的五种状态详解【转】</title><link>http://www.blogjava.net/hulizhong/archive/2010/06/07/322942.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Mon, 07 Jun 2010 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2010/06/07/322942.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/322942.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2010/06/07/322942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/322942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/322942.html</trackback:ping><description><![CDATA[<a href="http://www.cnblogs.com/myssh/archive/2009/12/18/1627368.html">【转】http://www.cnblogs.com/myssh/archive/2009/12/18/1627368.html</a><br />
<span class="Apple-style-span" style="word-spacing: 0px; font: medium 'Times New Roman'; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; webkit-text-size-adjust: auto; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 13px; color: rgb(75,75,75); line-height: 19px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">在《Pragmatic <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html">AJAX中文问题</a>&nbsp;A Web 2.0 Primer 》中偶然看到对readyStae状态的介绍，感觉这个介绍很实在，摘译如下：</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">&nbsp;0: (Uninitialized) the send( ) method has not yet been invoked.&nbsp;<br />
&nbsp;1: (Loading) the send( ) method has been invoked, request in&nbsp;progress.&nbsp;<br />
&nbsp;2: (Loaded) the send( ) method has completed, entire response&nbsp;received.<br />
&nbsp;3: (Interactive) the response is being parsed.&nbsp;<br />
&nbsp;4: (Completed) the response has been parsed, is ready for harvesting.&nbsp;</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">&nbsp;0 －&nbsp;（未初始化）还没有调用send()方法<br />
&nbsp;1 －&nbsp;（载入）已调用send()方法，正在发送请求<br />
&nbsp;2 －&nbsp;（载入完成）send()方法执行完成，已经接收到全部响应内容<br />
&nbsp;3 －&nbsp;（交互）正在解析响应内容<br />
&nbsp;4 －&nbsp;（完成）响应内容解析完成，可以在客户端调用了</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">对于readyState的这五种状态，其他书中大都语焉不详。像《Foundations of <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html">AJAX中文问题</a>》中，只在书中的表2-2简单地列举了状态的&#8220;名称&#8221;－－The state of the request. The five possible values are 0 = uninitialized,&nbsp;1 = loading, 2 = loaded, 3 = interactive, and 4 = complete。而《Ajax in Action》中好像根本就没有提到这5种状态的细节。《Professional <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html">AJAX中文问题</a>》中虽不尽人意，但还是有可取之处：</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">There are five possible values for readyState:&nbsp;<br />
0 (Uninitialized): The object has been created but the open() method hasn&#8217;t been&nbsp;called.&nbsp;<br />
1 (Loading): The open() method has been called but the request hasn&#8217;t been sent.&nbsp;<br />
2 (Loaded): The request has been sent.&nbsp;<br />
3 (Interactive). A partial response has been received.&nbsp;<br />
4 (Complete): All data has been received and the connection has been closed.&nbsp;</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">readyState有五种可能的值：<br />
0 (未初始化)： (XMLHttpRequest)对象已经创建，但还没有调用open()方法。<br />
1 (载入)：已经调用open() 方法，但尚未发送请求。<br />
2 (载入完成)： 请求已经发送完成。<br />
3 (交互)：可以接收到部分响应数据。<br />
4 (完成)：已经接收到了全部数据，并且连接已经关闭。</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">在《<strong>Understanding <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html">AJAX中文问题</a>: Using JavaScript to Create Rich Internet Applications</strong>》中，则用下表进行了说明：</p>
<table cellspacing="0" align="center" border="1">
    <thead>
        <tr>
            <th valign="top" scope="col" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 24px">readyState Status Code</p>
            </th>
            <th valign="top" scope="col" align="left">Status of the<span class="Apple-converted-space">&nbsp;</span><tt>XMLHttpRequest</tt><span class="Apple-converted-space">&nbsp;</span>Object</th>
        </tr>
        <tr>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">(0) UNINITIALIZED<br />
            未初始化</td>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">The object has been created but not initialized. (The<span class="Apple-converted-space">&nbsp;</span><tt>open</tt><span class="Apple-converted-space">&nbsp;</span>method has not been called.)<br />
            （XMLHttpRequest）对象已经创建，但尚未初始化（还没有调用open方法）。</td>
        </tr>
        <tr>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif"><tt>(1) LOADING<br />
            载入</tt></td>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">The object has been created, but the<span class="Apple-converted-space">&nbsp;</span><tt>send</tt><span class="Apple-converted-space">&nbsp;</span>method has not been called.<br />
            （XMLHttpRequest）对象已经创建，但尚未调用send方法。</td>
        </tr>
        <tr>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif"><tt>(2) LOADED<br />
            载入完成</tt></td>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">The<span class="Apple-converted-space">&nbsp;</span><tt>send</tt><span class="Apple-converted-space">&nbsp;</span>method has been called, but the status and headers are not yet available.<br />
            已经调用send方法，（HTTP响应）状态及头部还不可用。</td>
        </tr>
        <tr>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif"><tt>(3) INTERACTIVE<br />
            交互</tt></td>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">Some data has been received. Calling the<span class="Apple-converted-space">&nbsp;</span><tt>responseBody</tt><span class="Apple-converted-space">&nbsp;</span>and<span class="Apple-converted-space">&nbsp;</span><tt>responseText</tt><span class="Apple-converted-space">&nbsp;</span>properties at this state to obtain partial results will return an error, because status and response headers are not fully available.<br />
            已经接收部分数据。但若在此时调用responseBody和responseText属性获取部分结果将会产生错误，因为状态和响应头部还不完全可用。</td>
        </tr>
        <tr>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif"><tt>(4) COMPLETED<br />
            完成</tt></td>
            <td style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">All the data has been received, and the complete data is available in the<span class="Apple-converted-space">&nbsp;</span><tt>responseBody</tt><span class="Apple-converted-space">&nbsp;</span>and<span class="Apple-converted-space">&nbsp;</span><tt>responseText</tt><span class="Apple-converted-space">&nbsp;</span>properties.<br />
            已经接收到了全部数据，并且在responseBody和responseText属性中可以提取到完整的数据。</td>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">根据以上几本书中的关于readyState五种状态的介绍，我认为还是《Pragmatic <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html">AJAX中文问题</a>&nbsp;A Web 2.0 Primer 》比较到位，因为它提到了对接收到的数据的解析问题，其他书中都没有提到这一点，而这一点正是&#8220;(3)交互&#8221;阶段作为一个必要的转换过程存在于&#8220;(2)载入完成&#8221;到&#8220;(4)完成&#8221;之间的理由，也就是其任务是什么。归结起来，我觉得比较理想的解释方法应该以&#8220;状态：任务（目标）+过程+表现（或特征）&#8221;表达模式来对这几个状态进行定义比较准确，而且让人容易理解。现试总结如下：</p>
<table cellspacing="0" cellpadding="5" rules="groups" align="center" border="1" frame="hsides">
    <thead>
        <tr>
            <th class="bottomBorder thead" valign="middle" scope="col" bordercolor="#ffffff" align="left" bgcolor="#6666cc">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 24px"><font color="#ffffff">readyState 状态</font></p>
            </th>
            <th class="bottomBorder thead" valign="middle" scope="col" bordercolor="#ffffff" align="left" bgcolor="#6666cc" height="35">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 24px"><tt><font color="#ffffff">状态说明</font></tt></p>
            </th>
        </tr>
        <tr>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px" align="left"><tt>(0)未初始化</tt></p>
            </td>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px">此阶段确认XMLHttpRequest对象是否创建，并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在，否则浏览器会报错－－对象不存在。</p>
            </td>
        </tr>
        <tr>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left" bgcolor="#ffffcc">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px" align="left"><tt>(1)载入</tt></p>
            </td>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left" bgcolor="#ffffcc">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px">此阶段对XMLHttpRequest对象进行初始化，即调用open()方法，根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。</p>
            </td>
        </tr>
        <tr>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px" align="left"><tt>(2)载入完成</tt></p>
            </td>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px">此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据，并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。</p>
            </td>
        </tr>
        <tr>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left" bgcolor="#ffffcc">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px" align="left"><tt>(3)交互</tt></p>
            </td>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left" bgcolor="#ffffcc">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px">此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式，为在客户端调用作好准备。状态3表示正在解析数据。</p>
            </td>
        </tr>
        <tr>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px" align="left"><tt>(4)完成</tt></p>
            </td>
            <td class="docTableCell" style="font-size: 12px; color: rgb(69,69,69); font-family: Verdana, Geneva, Arial, Helvetica, sans-serif" valign="top" align="left">
            <p class="docText" style="margin: 5px auto; text-indent: 0px; line-height: 18px">此阶段确认全部数据都已经解析为客户端可用的格式，解析已经完成。值为4表示数据解析完毕，可以通过XMLHttpRequest对象的相应属性取得数据。</p>
            </td>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">概而括之，整个XMLHttpRequest对象的生命周期应该包含如下阶段：<br />
创建－初始化请求－发送请求－接收数据－解析数据－完成</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">在具体应用中，明确了readyState的五个状态（XMLHttpRequest对象的生命周期各个阶段）的含义，就可以消除对Ajax核心的神秘感（语焉不详的背后要么是故弄玄虚，制造神秘感；要么就是&#8220;以其昏昏，使人昭昭&#8221;），迅速把握其实质，对减少学习中的挫折感和增强自信心都极其有益。</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">比如，通过如下示例：</p>
<pre style="margin-top: 0px; margin-bottom: 0px">
<p class="code" style="margin: 5px auto; text-indent: 0px; line-height: 19px">
//声明数组
var states ＝ [&#8220;正在初始化&#8230;&#8230;&#8221;,
&#8220;正在初始化请求&#8230;&#8230;成功！
正在发送请求&#8230;&#8230;&#8221;,
&#8220;成功！
正在接收数据&#8230;&#8230;&#8221;,
&#8220;完成！
正在解析数据&#8230;&#8230;&#8221;,
&#8220;完成！
&#8221;];
//回调函数内部代码片段
if (xmlHttp.readyState==4)
{
var span = document.createElement(&#8220;span&#8221;);
span.innerHTML = states[xmlHttp.readyState];
document.body.appendChild(span);
if (xmlHttp.status == 200)
{
var xmldoc = xmlHttp.responseXML;
//其他代码
}
//别忘记销毁，防止内存泄漏
xmlHttp = null;
}else{
var span = document.createElement(&#8220;span&#8221;);
span.innerHTML = states[xmlHttp.readyState];
document.body.appendChild(span);
}</p>
</pre>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">结果如下：</p>
<p class="code" style="margin: 5px auto; text-indent: 0px; line-height: 19px">正在初始化请求&#8230;&#8230;成功！<br />
正在发送请求&#8230;&#8230;成功！<br />
正在接收数据&#8230;&#8230;完成！<br />
正在解析数据&#8230;&#8230;完成！</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">我们很容易明白XMLHttpRequest对象在各个阶段都在做什么。因此，也就很容易对Ajax的核心部分有一个真正简单明了的理解。</p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px"><span style="color: red; line-height: 19px">本博PS：readyState一般用在异步请求时程序响应的判断，Iframe， javaScript脚本同样适用,参考另一篇文章：</span><a style="color: rgb(26,139,200); text-decoration: none" href="http://d-tune.javaeye.com/blog/506074" target="_blank"><span style="color: red; line-height: 19px">http://d-tune.javaeye.com/blog/506074</span></a></p>
<p style="margin: 5px auto; text-indent: 0px; line-height: 19px">文章出处：<a style="color: rgb(26,139,200); text-decoration: none" href="http://www.cn-cuckoo.com/2007/07/16/the-details-for-five-states-of-readystate-9.html" target="_blank">http://www.cn-cuckoo.com/2007/07/16/the-details-for-five-states-of-readystate-9.html</a></p>
</span></span><img src ="http://www.blogjava.net/hulizhong/aggbug/322942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2010-06-07 09:19 <a href="http://www.blogjava.net/hulizhong/archive/2010/06/07/322942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转 回忆我们经典的开发工具</title><link>http://www.blogjava.net/hulizhong/archive/2009/10/20/299010.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Tue, 20 Oct 2009 05:04:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/10/20/299010.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/299010.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/10/20/299010.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/299010.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/299010.html</trackback:ping><description><![CDATA[转 http://blog.csdn.net/gaoweipeng/archive/2009/10/18/4695780.aspx<br />
平时的开发如果我们能有些得心应手的开发工具，就好比是如虎添翼。会大大的提高我们的开发效率。Visual Studio 自不必说，通过此文，和大家回忆下除此之外的经典的开发工具，同时希望能把这些经典的工具介绍给新手，相信对平日的开发会有很大的帮助。<br />
<br />
<img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong style="font-size: 12pt;">Internet Explorer Developer Toolbar</strong><br style="font-size: 12pt;" />
<span style="color: red;">简介</span>：微软发布了Internet Explorer Developer Toolbar最新版.该产品让开发人员能够深入探索和理解Web页面,帮助开发者更好地创建Web应用.安装后可以在IE中快速分析网页的软件.该工具条可集成在IE窗口,或以浮动窗口形式存在.<br />
<img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/ittoolbar.gif" height="274" width="1273" /><br />
IE Developer Toolbar特性如下:<br />
<p>浏览和修改Web页的文档对象模型(DOM).通过多种技术方式定位、选定Web页上的特定元素.禁止或激活IE设置.查看HTML对象的类名、
ID,以及类似链接路径、tab顺序、快捷键等细节.描绘表格、单元格、图片或选定标签的轮廓.显示图片象素、大小、路径、替代文字等.即时重定义浏览器
窗口大小到800x600或自定义大小.清空浏览器缓存和cookie,被清除项可从所有对象或给定域中选择.直接访问关联W3C规范参考、IE开发组
blog或其他来源.－显示设计时标尺,帮助对齐对象. ....&nbsp;<br />
</p>
<p><span style="color: red; font-family: 宋体;">下载地址及相关资料：</span><a href="http://www.skycn.com/soft/24101.html" target="_blank"><br />
http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;DisplayLang=en#Overview</a></p>
<p><br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong style="font-size: 12pt;">HttpWatch</strong><br style="font-size: 12pt;" />
<span style="color: red;">简介</span>：强大的<u>网页数据分析工具</u>。集成在Internet Explorer工具栏。包括网页摘要。Cookies管理。缓存管理。消息头发送/接受。字符查询。POST 数据和目录管理功能。报告输出。</p>
<p>安装完HttpWatch后，就会在浏览器中找到他：<br />
<img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/httpwatch2.gif" border="0" height="178" width="404" /><br />
主界面：<br />
<img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/httpwatch.gif" border="0" height="326" width="927" />&nbsp;<br />
<span style="color: red;">下载地址：</span><a href="http://www.crsky.com/soft/3455.html" target="_blank">http://www.crsky.com/soft/3455.html</a></p>
<p><span style="color: #ff0000;">使</span><span style="color: #ff0000;">用介绍：</span><a href="http://www.cnblogs.com/mayingbao/archive/2007/11/30/978530.html" target="_blank">http://www.cnblogs.com/mayingbao/archive/2007/11/30/978530.html</a> </p>
<p><br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong style="font-size: 12pt;">Fiddler2</strong></p>
<p><span style="color: red;">简介</span>：Fiddler2是一个<u>网络调试代理</u>，用来监测本地计算
机和Internet之间所有的HTTP通讯。可以监测所有的HTTP通讯，设置断点，并且可以修改到进入到本地计算机的数据和从本地计算机出去的数据
（就是可以伪造数据）。Fiddler包含一个JScript .NET 事件脚本子系统（event-based scripting
subsystem），可以使用任何一种.Net语言扩展。该软件是免费的，支持多种浏览器，包括Internet Explorer，Mozilla
Firefox，Opera和其它一些浏览器。</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/fiddle2.gif" height="381" width="790" /><br />
</p>
<p>从Fiddler官方网站上可以看见原版的英文介绍：<a title="http://www.fiddler2.com/fiddler2/" href="http://www.fiddler2.com/fiddler2/" target="_blank">http://www.fiddler2.com/fiddler2/</a><br />
<span style="color: red;">下载地址：</span><a title="http://www.fiddler2.com/fiddler2/" href="http://www.fiddler2.com/fiddler2/" target="_blank">http://www.fiddler2.com/fiddler2/</a></p>
<p><span style="color: red;">使用介绍：</span><a href="http://blog.csdn.net/lihongzhai/archive/2009/09/14/4551035.aspx" target="_blank">http://blog.csdn.net/lihongzhai/archive/2009/09/14/4551035.aspx</a> </p>
<p><br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong style="font-size: 12pt;">NUnit&nbsp;</strong></p>
<p>NUnit是一个<u>单元测试框架</u>，专门针对于。NET来写的.其实在前面有JUnit(Java)，CPPUnit(C++)，他们都是xUnit的一员。最初它是从JUnit而来。现在的版本是2.2.接下来我所用的都是基于这个版本。</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/NUnit.1.jpg" height="315" width="554" /></p>
<p><span style="color: red;">下载地址：</span><a href="http://www.nunit.org/index.php" target="_blank">http://www.nunit.org/index.php</a></p>
<p><span style="color: red;">使用介绍：</span><a href="http://www.uml.org.cn/net/200702273.asp" target="_blank">http://www.uml.org.cn/net/200702273.asp</a> </p>
<p><br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong><span style="font-size: 12pt;">PowerDesigner</span></strong><br />
</p>
<p><span style="color: red;">简介：</span>PowerDesigner是Sybase公司的CASE工具集，使用它可以方便地对管理信息系统进行分析设计，它几乎包括了<u>数据库模型设计</u>的全过程。<br />
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型，可以生成多种客户端开发工具的应用程序，还可为数据仓库制作结构模型，也能对团队设计模型进行控制。<br />
</p>
<p>主要功能：DataArchitect：这是一个强大的数据库设计工具，使用DataArchitect
可利用实体-关系图为一个信息系统。创建"概念数据模型"－CDM（Conceptual Data Model）。并且可根据CDM
产生基于某一特定数据库管理系统（例如：Sybase System 11）的"物理数据模型"-PDM(Physical Data
Model)。还可优化PDM，产生为特定DBMS 创建数据库的SQL 语句并可以文件形式存储以便在其他时刻运行这些SQL
语句创建数据库。另外，DataArchitect还可根据已存在的数据库反向生成<br />
PDM，CDM 及创建数据库的SQL脚本。<br />
ProcessAnalyst：这部分用于创建功能模型和数据流图，创建"处理层次关系"。<br />
AppModeler：为客户/服务器应用程序创建应用模型。<br />
ODBC Administrator：此部分用来管理系统的各种数据源。<br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/PD_03_440.jpg" height="539" width="752" /><br />
</p>
<p><span style="color: red;">下载地址：</span><a href="http://www.baidu.com/s?tn=sitehao123&amp;bs=PowerDesigner&amp;f=3&amp;wd=powerdesigner%CF%C2%D4%D8&amp;oq=powerdesigner&amp;rsp=0" target="_blank">http://www.baidu.com/s?tn=sitehao123&amp;bs=PowerDesigner&amp;f=3&amp;wd=powerdesigner%CF%C2%D4%D8&amp;oq=powerdesigner&amp;rsp=0</a> ：)<br />
</p>
<p><span style="color: red;">使用介绍： </span><a href="http://www.cnblogs.com/yxonline/archive/2007/04.html" target="_blank">http://www.cnblogs.com/yxonline/archive/2007/04.html</a> <br />
</p>
<p><br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" />&nbsp;<strong style="font-size: 12pt;">Reflector</strong></p>
<p><span style="color: red;">简介：</span>Visual Studio内置的ILDASM成为最初<u>挖掘程序集的上佳工具</u>。
但自从Reflector出现后，ILDASM相形见拙。因为，Reflector能提供更多的程序集信息。Reflector可以将.NET程序集中的
中间语言反编译成C#或者Visual Basic代码。除了能将IL转换为C#或Visual
Basic以外，Reflector还能够提供程序集中类及其成员的概要信息、提供查看程序集中IL的能力以及提供对第三方插件的支持。<img alt="" src="http://www.cnblogs.com/gaoweipeng/admin/file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/moz-screenshot.png" /></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/reflector.JPG" height="465" width="778" /><br />
</p>
<p><span style="color: red;">下载地址</span><span style="color: red;">： </span><a href="http://files.cnblogs.com/gaoweipeng/Reflector.rar" target="_blank">/Files/gaoweipeng/Reflector.rar</a></p>
<p><span style="color: red;">使用介绍及其他相关下载：</span><a href="http://www.cnblogs.com/zzy2740/archive/2005/09/20/240216.html" target="_blank">http://www.cnblogs.com/zzy2740/archive/2005/09/20/240216.html</a></p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong style="font-size: 12pt;">1st JavaScript Editor</strong></p>
<p><span style="color: red;">简介：</span> 1st JavaScript Editor 是一款强大的<u>JavaScript开发、校验和调试工具</u>，
它简单易用，不论你是初学者或者是专业的开发人士，都可以轻松上手！同时它又是完美的Ajax (Asynchronous JavaScript
and XML),CSS, HTML, DOM DHTML开发工具！它提供了简单而且实用的功能：丰富的代码编辑功能(JavaScript,
HTML, CSS, VBScript, PHP ,ASP(Net))，语法高亮，内置预览功能，提供了完整的HTML 标记, HTML 属性,
HTML 事件, JavaScript 事件和JavaScript 函数等完整的代码库，同时有着贴心的代码自动补全功能。<br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/jsEdit.JPG" height="470" width="698" /><br />
</p>
<p>官网及下载地址：<span style="font-size: 10.5pt; font-family: 'Times New Roman';"><a href="http://yaldex.com/" target="_blank">http://yaldex.com/</a></span><br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/193608/o_comment.gif" border="0" height="24" width="32" /><strong style="font-size: 12pt;">Regulator</strong></p>
<p><span style="color: red;">简介</span>：使用Reglator可以方便的验证<u>正则表达式的执行结果</u>，带有智能感知功能。帮助文档是一个很好的学习正则的入门教程，也可以当作参考手册。基本上就全了，同时进行学习和实践。还有生成c# or vb.net代码等附加功能。 类似的软件现在很多：RegexBuddy ，RegexTester。等<br />
</p>
<p><img alt="" src="http://images.cnblogs.com/cnblogs_com/gaoweipeng/regulator_main_1245339666.png" height="424" width="682" /></p>
<p>&nbsp;<span style="color: red;">下载地址：</span><a title="" href="http://sourceforge.net/projects/regulator/" target="_blank">http://sourceforge.net/projects/regulator/</a></p>
<p>&nbsp;<span style="color: red;">使用介绍：</span><a href="http://www.ctochina.net/topic/ShowArticle/112.html" target="_blank">http://www.ctochina.net/topic/ShowArticle/112.html</a></p>
<p>&nbsp;小结：上面的开发工具都是我平时喜欢用的，希望通过此文的介绍，对没有使用过的朋友带来帮助。也希望园子中的朋友们<strong>秀一秀自己平时常用的开发工具</strong>，分享些更实用，方便的开发工具！</p>
<br />
<br /><img src ="http://www.blogjava.net/hulizhong/aggbug/299010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-10-20 13:04 <a href="http://www.blogjava.net/hulizhong/archive/2009/10/20/299010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于ajax应用中session过期问题的几个解决方案</title><link>http://www.blogjava.net/hulizhong/archive/2009/07/08/285973.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Wed, 08 Jul 2009 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/07/08/285973.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/285973.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/07/08/285973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/285973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/285973.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在web开发中，ajax应用的比较多。关于此方面的框架也不少。在应用中都会遇到session过期<br />
的问题，如处理不当会影响用户体验，也有可能产生莫名的问题。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结合自己的思考和网上相关内容的参考，给出如下解决方案。每个方案都有不同的优缺点，欢迎<br />
大家指正。<br />
&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">方案1:检查AJAX返回的返回的内容是否有&lt;html&gt;标签<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在web系统中，当session过期时，当用户有操作的时候，此时系统一般会返回登陆界面。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让用户重新输入用户名和密码。当session过期的时候，AJAX请求返回的内容应该是登陆界面的页面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内容(即登陆界面的页面的html代码)。通过判断返回内容是否用&lt;html&gt;来判断session是否过期。<br />
&nbsp;&nbsp;&nbsp;&nbsp; var result=request.responseText;/* ajax返回的内容*/<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; if(result.indexOf('&lt;HTML&gt;')&gt;-1){/*返回内容中有html标签*/}<br />
&nbsp;&nbsp;&nbsp;&nbsp; 或者<br />
&nbsp;&nbsp;&nbsp;&nbsp; var r=/&lt;html&gt;/ig;<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(r.test(result)){/*返回内容中有html标签*/}<br />
&nbsp;&nbsp;&nbsp;&nbsp; 通过上面的方法可以判断session是否过期，然后根据具体的业务进行异常处理。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">&nbsp;方案2：返回的结果中有session是否过期的标志。也有人称为true/false模式<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此解决方案一般结合json使用。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如返回的结果是:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var res={<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "result":true,/*session没有过期,false(session过期)*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "data"&nbsp; :""/*其它数据*/<br />
&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; if(res["result"])<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*session没有过期*/ <br />
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*session过期*/<br />
&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 方案3：利用时间戳<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在页面上搞个全局变量<br />
&nbsp;&nbsp;&nbsp;&nbsp; var startDate; /*ajax最近一次访问服务器的时间,Date类型*/<br />
&nbsp;&nbsp;&nbsp;&nbsp; if(new Date().getTime()-startDate.getTime()&lt;30*60*1000)<br />
&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*假设session过期的时间30分钟*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*session没有过期*/<br />
&nbsp;&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*session过期*/<br />
&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 哈哈！Do not trust the client</p>
<p>&nbsp;&nbsp;&nbsp; 方案4:延长session过期时间<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此方案有性能问题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.1：延长session过期时间<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.2：client轮循server。(AJAX轮循server或client，server保持长连接)</p><img src ="http://www.blogjava.net/hulizhong/aggbug/285973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-07-08 20:52 <a href="http://www.blogjava.net/hulizhong/archive/2009/07/08/285973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转 XMLHttpRequest().readyState的五种状态详解 </title><link>http://www.blogjava.net/hulizhong/archive/2009/05/04/268846.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Mon, 04 May 2009 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/05/04/268846.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/268846.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/05/04/268846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/268846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/268846.html</trackback:ping><description><![CDATA[转 http://javathinker.blog.ccidnet.com/blog-htm-itemid-1262479-do-showone-type-blog-uid-36384.html<br />
<br />
在《Pragmatic <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html" >AJAX中文问题</a> A Web 2.0 Primer 》中偶然看到对readyStae状态的介绍，感觉这个介绍很实在，摘译如下：<br />
<br />
0: (Uninitialized) the send( ) method has not yet been invoked. <br />
1: (Loading) the send( ) method has been invoked, request in progress. <br />
2: (Loaded) the send( ) method has completed, entire response received.<br />
3: (Interactive) the response is being parsed. <br />
4: (Completed) the response has been parsed, is ready for harvesting. <br />
<br />
0 － （未初始化）还没有调用send()方法<br />
1 － （载入）已调用send()方法，正在发送请求<br />
2 － （载入完成）send()方法执行完成，已经接收到全部响应内容<br />
3 － （交互）正在解析响应内容<br />
4 － （完成）响应内容解析完成，可以在客户端调用了<br />
<br />
对
于readyState的这五种状态，其他书中大都语焉不详。像《Foundations of
<a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html" >AJAX中文问题</a>》中，只在书中的表2-2简单地列举了状态的&#8220;名称&#8221;－－The state of the request. The five
possible values are 0 = uninitialized, 1 = loading, 2 = loaded, 3 =
interactive, and 4 = complete。而《Ajax in
Action》中好像根本就没有提到这5种状态的细节。《Professional <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html" >AJAX中文问题</a>》中虽不尽人意，但还是有可取之处：<br />
<br />
There are five possible values for readyState: <br />
0 (Uninitialized): The object has been created but the open() method hasn&#8217;t been called. <br />
1 (Loading): The open() method has been called but the request hasn&#8217;t been sent. <br />
2 (Loaded): The request has been sent. <br />
3 (Interactive). A partial response has been received. <br />
4 (Complete): All data has been received and the connection has been closed. <br />
<br />
readyState有五种可能的值：<br />
0 (未初始化)： (XMLHttpRequest)对象已经创建，但还没有调用open()方法。<br />
1 (载入)：已经调用open() 方法，但尚未发送请求。<br />
2 (载入完成)： 请求已经发送完成。<br />
3 (交互)：可以接收到部分响应数据。<br />
4 (完成)：已经接收到了全部数据，并且连接已经关闭。<br />
<br />
在《Understanding <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html" >AJAX中文问题</a>: Using JavaScript to Create Rich Internet Applications》中，则用下表进行了说明：<br />
<br />
readyState Status Code<br />
Status of the XMLHttpRequest Object <br />
(0) UNINITIALIZED<br />
未初始化 The object has been created but not initialized. (The open method has not been called.)<br />
（XMLHttpRequest）对象已经创建，但尚未初始化（还没有调用open方法）。 <br />
(1) LOADING<br />
载入 The object has been created, but the send method has not been called.<br />
（XMLHttpRequest）对象已经创建，但尚未调用send方法。 <br />
(2) LOADED<br />
载入完成 The send method has been called, but the status and headers are not yet available.<br />
已经调用send方法，（HTTP响应）状态及头部还不可用。 <br />
(3) INTERACTIVE<br />
交
互 Some data has been received. Calling the responseBody and
responseText properties at this state to obtain partial results will
return an error, because status and response headers are not fully
available.<br />
已经接收部分数据。但若在此时调用responseBody和responseText属性获取部分结果将会产生错误，因为状态和响应头部还不完全可用。 <br />
(4) COMPLETED<br />
完成 All the data has been received, and the complete data is available in the responseBody and responseText properties.<br />
已经接收到了全部数据，并且在responseBody和responseText属性中可以提取到完整的数据。 <br />
<br />
根
据以上几本书中的关于readyState五种状态的介绍，我认为还是《Pragmatic <a title="" href="http://www.blogjava.net/hulizhong/articles/112412.html" >AJAX中文问题</a> A Web 2.0 Primer
》比较到位，因为它提到了对接收到的数据的解析问题，其他书中都没有提到这一点，而这一点正是&#8220;(3)交互&#8221;阶段作为一个必要的转换过程存在于&#8220;(2)载
入完成&#8221;到&#8220;(4)完成&#8221;之间的理由，也就是其任务是什么。归结起来，我觉得比较理想的解释方法应该以&#8220;状态：任务（目标）+过程+表现（或特征）&#8221;表达
模式来对这几个状态进行定义比较准确，而且让人容易理解。现试总结如下：<br />
<br />
readyState 状态<br />
状态说明<br />
<br />
(0)未初始化<br />
此阶段确认XMLHttpRequest对象是否创建，并为调用open()方法进行未初始化作好准备。值为0表示对象已经存在，否则浏览器会报错－－对象不存在。<br />
<br />
(1)载入<br />
此阶段对XMLHttpRequest对象进行初始化，即调用open()方法，根据参数(method,url,true)完成对象状态的设置。并调用send()方法开始向服务端发送请求。值为1表示正在向服务端发送请求。<br />
<br />
(2)载入完成<br />
此阶段接收服务器端的响应数据。但获得的还只是服务端响应的原始数据，并不能直接在客户端使用。值为2表示已经接收完全部响应数据。并为下一阶段对数据解析作好准备。<br />
<br />
(3)交互<br />
此阶段解析接收到的服务器端响应数据。即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式，为在客户端调用作好准备。状态3表示正在解析数据。<br />
<br />
(4)完成<br />
此阶段确认全部数据都已经解析为客户端可用的格式，解析已经完成。值为4表示数据解析完毕，可以通过XMLHttpRequest对象的相应属性取得数据。<br />
<br />
<br />
概而括之，整个XMLHttpRequest对象的生命周期应该包含如下阶段：<br />
创建－初始化请求－发送请求－接收数据－解析数据－完成<br />
<br />
在
具体应用中，明确了readyState的五个状态（XMLHttpRequest对象的生命周期各个阶段）的含义，就可以消除对Ajax核心的神秘感
（语焉不详的背后要么是故弄玄虚，制造神秘感；要么就是&#8220;以其昏昏，使人昭昭&#8221;），迅速把握其实质，对减少学习中的挫折感和增强自信心都极其有益。<br />
<br />
比如，通过如下示例：<br />
<br />
<br />
//声明数组<br />
var states ＝ [&#8220;正在初始化&#8230;&#8230;&#8221;,<br />
&#8220;正在初始化请求&#8230;&#8230;成功！<br />
正在发送请求&#8230;&#8230;&#8221;,<br />
&#8220;成功！<br />
正在接收数据&#8230;&#8230;&#8221;,<br />
&#8220;完成！<br />
正在解析数据&#8230;&#8230;&#8221;,<br />
&#8220;完成！<br />
&#8221;];             <br />
<br />
//回调函数内部代码片段<br />
if (xmlHttp.readyState==4)<br />
{<br />
var span = document.createElement(&#8220;span&#8221;);<br />
span.innerHTML = states[xmlHttp.readyState];<br />
document.body.appendChild(span);             <br />
<br />
if (xmlHttp.status == 200)<br />
{<br />
var xmldoc = xmlHttp.responseXML;<br />
//其他代码<br />
}             <br />
<br />
//别忘记销毁，防止内存泄漏<br />
xmlHttp = null;<br />
}else{<br />
var span = document.createElement(&#8220;span&#8221;);<br />
span.innerHTML = states[xmlHttp.readyState];<br />
document.body.appendChild(span);<br />
}结果如下：<br />
<br />
正在初始化请求&#8230;&#8230;成功！<br />
正在发送请求&#8230;&#8230;成功！<br />
正在接收数据&#8230;&#8230;完成！<br />
正在解析数据&#8230;&#8230;完成！<br />
<br />
我们很容易明白XMLHttpRequest对象在各个阶段都在做什么。因此，也就很容易对Ajax的核心部分有一个真正简单明了的理解。<br />
<br />
<br /><img src ="http://www.blogjava.net/hulizhong/aggbug/268846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-05-04 17:03 <a href="http://www.blogjava.net/hulizhong/archive/2009/05/04/268846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转 FireBug 调试JS入门 —如何调试JS</title><link>http://www.blogjava.net/hulizhong/archive/2009/04/16/265899.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Thu, 16 Apr 2009 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/04/16/265899.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/265899.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/04/16/265899.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/265899.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/265899.html</trackback:ping><description><![CDATA[转 http://www.blogjava.net/vincent/archive/2009/04/14/265591.html<br />
<br />
<span style="font-size: 10pt;">安装就不用说了，很简单，在FireFox上插件库里找到FireBug就Ok了。下图是FireBug Debug 窗口。<br />
<div align="center"><img style="width: 733px; height: 333px;" alt="" src="../../images/blogjava_net/vincent/js.gif" width="733" border="0" height="333" /><br />
</div>
&nbsp;&nbsp;&nbsp;&nbsp; FireBug美工用的非常普遍，公司美工妹妹用的非常熟练 呵呵，而对于我们开发人员，主要用它来Debug JS。看看官方对Debug功能的介绍。<br />
&nbsp;Firebug includes a powerful JavaScript debugger that lets you pause
execution at any time and see what each variable looked like at that
moment. If your code is a little sluggish, use the JavaScript profiler
to measure performance and find bottlenecks fast.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 简而言之，FireBug 可以让我们在任何时候debugJS 并查看变量，同时可以通过它找出JS中性能瓶颈。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下图是如何找到Web应用的JS，激活Firebug，点Script，然后在All 旁边选择你要Debug的JS。<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-listing.gif" border="0" /></div>
<br />
下图是如何打断点 基本跟Eclipse一样，点击行号就Ok了。<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-breakpoint.gif" width="214" border="0" height="164" /></div>
下图是如何在断点上设定条件，如果条件符合，就进入断点，这个功能很不错，特别是Debug很复杂的Function时候。<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-cond.gif" width="214" border="0" height="164" /></div>
&nbsp;下图是如何单步调试，跟Eclipse一样 F11单步 <br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-step.gif" width="214" border="0" height="164" /></div>
下图是查看调用的Stack，对以复杂的JS Debug很有帮助。<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-stack.gif" width="214" border="0" height="164" /><br />
</div>
下图是查看变量 基本跟EclipseDebug 一样。<br />
<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-watch.gif" border="0" /></div>
<br />
下图是在断点处查看变量。<br />
<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-tooltip.gif" width="214" border="0" height="164" /></div>
<br />
有个很好用的功能，代码行之间快速调转，使得对上千行的JS调试很轻松。<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-linejump.gif" width="214" border="0" height="164" /></div>
下图就是Performance 测试结果，使用很简单 点Profile<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-profile.gif" width="214" border="0" height="164" /></div>
<br />
还有一个Log功能比较实用，看下图 如果你不想每次都进入断点，用这个就再好不过了。<br />
<div align="center"><img alt="" src="../../images/blogjava_net/vincent/screenScript-logcalls.gif" width="214" border="0" height="164" /></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本用法就这些了，希望对大家有帮助。</span><br />
<br /><img src ="http://www.blogjava.net/hulizhong/aggbug/265899.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-04-16 09:14 <a href="http://www.blogjava.net/hulizhong/archive/2009/04/16/265899.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>json入门(2) json在服务器端的应用</title><link>http://www.blogjava.net/hulizhong/archive/2008/09/11/228256.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Thu, 11 Sep 2008 00:24:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2008/09/11/228256.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/228256.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2008/09/11/228256.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/228256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/228256.html</trackback:ping><description><![CDATA[<p>son入门(2) json在服务器端的应用<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 在上文中说了json应用的一个简单过程。在本文中详细说一个json在服务器端的应用。<br />
&nbsp;&nbsp; json在服务器端应用大致分为2类：<br />
&nbsp;&nbsp; 1，接受并解析客户端发送给服务器的json数据<br />
&nbsp;&nbsp; 2，服务器向客户端发送json数据<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 下面分别说一下这2方面的应用：<br />
&nbsp;&nbsp; 1,接受并解析客户端发送给服务器的json数据<br />
&nbsp;&nbsp; 如果客户端发送给服务器的数据是 {name:'hello',obj:['age','13']}&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 服务器端程序如下：<br />
&nbsp;&nbsp; package com.test;<br />
&nbsp;&nbsp; import org.json.JSONArray;<br />
&nbsp;&nbsp; import org.json.JSONException;<br />
&nbsp;&nbsp; import org.json.JSONObject;<br />
&nbsp;&nbsp; /*+++++++++++++++++++++++++++++++++++++++++++++++++<br />
&nbsp;&nbsp;&nbsp; +@author lzh<br />
&nbsp;&nbsp;&nbsp; +Description: <br />
&nbsp;&nbsp;&nbsp; +Copyright:Copyright 2008 HULIZHONG<br />
&nbsp;&nbsp;&nbsp; +Author:lzh(hulizhong2008@163.com)<br />
&nbsp;&nbsp;&nbsp; +History:<br />
&nbsp;&nbsp; ++++++++++++++++++++++++++++++++++++++++++++++++++*/<br />
&nbsp;&nbsp; public class JSONHandler {<br />
&nbsp;public void parseJSON(String jsonStr) throws Exception{<br />
&nbsp;&nbsp;&nbsp;&nbsp; //参数jsonStr的值为{name:'hello',obj:['age','13']}&nbsp; <br />
&nbsp;&nbsp;String name=null,age=null;<br />
&nbsp;&nbsp;JSONObject jSONObject=new JSONObject(jsonStr);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;name=(String)jSONObject.get("name");<br />
&nbsp;&nbsp;//name的值应是hello<br />
&nbsp;&nbsp;age=((JSONObject)jSONObject.get("obj")).get("age");<br />
&nbsp;&nbsp;//age的值应是13&nbsp;&nbsp;<br />
&nbsp;}<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; 上面的程序就完成了服务器端对客户端发送json数据的解析工作，再获取name,age值后，即可进行其它业务逻辑处理！<br />
&nbsp; <br />
&nbsp; 2，服务器向客户端发送json数据<br />
&nbsp;&nbsp;&nbsp;&nbsp; package com;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; import javax.servlet.http.HttpServletResponse;<br />
&nbsp;&nbsp;&nbsp;&nbsp; import org.json.JSONObject;<br />
&nbsp;&nbsp;&nbsp;&nbsp; /*+++++++++++++++++++++++++++++++++++++++++++++++++<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +@author lzh<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +Description: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +Copyright:Copyright 2008 HULIZHONG<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +Author:lzh(hulizhong2008@163.com)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +History:<br />
&nbsp;&nbsp;&nbsp;&nbsp; ++++++++++++++++++++++++++++++++++++++++++++++++++*/<br />
&nbsp;&nbsp;&nbsp; public class JSONResponse {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void jsonResponse(HttpServletResponse response) throws Exception {<br />
&nbsp;&nbsp;//向客户端发送数据:{name:'hello',obj:['age','13']} <br />
&nbsp;&nbsp;JSONObject obj1 = new JSONObject();<br />
&nbsp;&nbsp;JSONObject obj2 = new JSONObject();<br />
&nbsp;&nbsp;obj2.put("age", "13");<br />
&nbsp;&nbsp;obj1.put("name", "hello");<br />
&nbsp;&nbsp;obj1.put("obj", obj2);</p>
<p>&nbsp;&nbsp;response.setHeader("Cache-Control", "no-cache");<br />
&nbsp;&nbsp;response.setContentType("text/plain");<br />
&nbsp;&nbsp;response.setCharacterEncoding("UTF-8");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //obj1.toString()即为{name:'hello',obj:['age','13']} <br />
&nbsp;&nbsp;response.getWriter().print(obj1.toString());<br />
&nbsp;}<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; 上述代码即为完成了服务端向客户端发送json数据的解析工作,客户端在接受{name:'hello',obj:['age','13']}数据后<br />
&nbsp;&nbsp; 根据具体业务要求进行数据处理<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 参考:<br />
&nbsp;&nbsp; www.JSON.org：访问 JSON Web 站点来进一步了解这种数据格式，包括到几种 JSON API 实现的链接<br />
&nbsp; <span style="color: red"><strong>下载附件:<br />
</strong></span>&nbsp;&nbsp; <a href="/Files/hulizhong/json.pdf">/Files/hulizhong/json.pdf</a></p><img src ="http://www.blogjava.net/hulizhong/aggbug/228256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2008-09-11 08:24 <a href="http://www.blogjava.net/hulizhong/archive/2008/09/11/228256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>json入门(1)</title><link>http://www.blogjava.net/hulizhong/archive/2008/09/02/226473.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Tue, 02 Sep 2008 11:15:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2008/09/02/226473.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/226473.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2008/09/02/226473.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/226473.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/226473.html</trackback:ping><description><![CDATA[json入门(1)<br />
&nbsp;&nbsp;&nbsp;&nbsp; json是JavaScript Object Notation的简称；在web系统开发中与AJAX相结合用的比较多。 <br />
&nbsp;在ajax中数据传输有2中方式：文本类型，常用responseText属性类获取；XML类型，常用responseXML属性来获取<br />
&nbsp;返回文本类型，处理起来比较简单，处理XML在前台处理比较麻烦；但是在系统开发中返回简单的文本类型常不能满足<br />
&nbsp;需求，返回XML在前台处理起来又比较复杂；<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在此情况下，用json处理起来就比较方便；关于json和XML的优缺点比较，网上说的比较多，在此我就谈写自己在使用<br />
&nbsp;过程中的感受：XML权威不可否认，但是在前台页面处理复杂，不能版本的浏览器实现XML的解析方式也有所差别；json在这<br />
&nbsp;方面有优势，json就是利用javascrpt语言的特性，把从服务器端返回的字符串转换成js对象；<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在javascrpt中可以用如下方式定义对象：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var obj={name:"hello world"};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等价与<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var s="{name:'hello world'}";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var obj=eval("("+s+")");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果要获取name属性的值，只需调用obj["name"]即可。如果服务器端返回的是&lt;name&gt;hello world&lt;/name&gt;，则要取的name属性<br />
&nbsp;的值就复杂的多；如果返回的XML格式的数据再复杂些，处理起来更麻烦。而json就是把服务器端返回的文本数据，在前台利用<br />
&nbsp;javascript语言的特性，把文本数据转换成js对象；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 服务器端：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server.jsp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%@ page language="java"&nbsp; pageEncoding="UTF-8"%&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />
&nbsp;&lt;html&gt;<br />
&nbsp; &lt;head&gt;<br />
&nbsp;&nbsp; &nbsp;&lt;meta http-equiv="pragma" content="no-cache"&gt;<br />
&nbsp;&lt;meta http-equiv="cache-control" content="no-cache"&gt;<br />
&nbsp;&lt;meta http-equiv="expires" content="0"&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&gt;<br />
&nbsp;&lt;meta http-equiv="description" content="This is my page"&gt;&nbsp;<br />
&nbsp; &lt;/head&gt;<br />
&nbsp; <br />
&nbsp; &lt;body&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;% <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType("text/html;charset=utf-8");<br />
&nbsp;&nbsp; response.getWriter().write("{name:'hello word',obj:{age:11}}");<br />
&nbsp;&nbsp;&nbsp; %&gt;<br />
&nbsp; &lt;/body&gt;<br />
&nbsp;&lt;/html&gt;<br />
&nbsp;<br />
&nbsp;&nbsp; 客户端:<br />
&nbsp;&nbsp; client.html<br />
&nbsp;&nbsp; 不相关的代码省略不写了<br />
&nbsp;&nbsp; var strResult = objXMLReq.responseText;<br />
&nbsp;&nbsp; 变量strResult的数值就是"{name:'hello word',obj:{age:11}}"; <br />
&nbsp;&nbsp; 利用javascrpt语言的特性:<br />
&nbsp;&nbsp; strResult=eval("("+strResult+")");<br />
&nbsp;&nbsp; 这样strResult就转换成了js对象了;<br />
&nbsp;&nbsp; 如果你要获取name和age的数值，只需要：<br />
&nbsp;&nbsp; var name=strResult["name"];<br />
&nbsp;&nbsp; var age=strResult["obj"]["age"];<br />
&nbsp;&nbsp; 比处理XML数据要方便的多;<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 文笔不好，请大家见量！json相关内容回陆续推出！ <br />
<span style="color: red"><strong>&nbsp; 下载附件:<br />
</strong></span>&nbsp;&nbsp; <a href="http://www.blogjava.net/Files/hulizhong/json.pdf">/Files/hulizhong/json.pdf</a><img src ="http://www.blogjava.net/hulizhong/aggbug/226473.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2008-09-02 19:15 <a href="http://www.blogjava.net/hulizhong/archive/2008/09/02/226473.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX中文问题总结 </title><link>http://www.blogjava.net/hulizhong/archive/2007/04/21/112416.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Sat, 21 Apr 2007 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2007/04/21/112416.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/112416.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2007/04/21/112416.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/112416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/112416.html</trackback:ping><description><![CDATA[<p>AJAX中文问题分为两大类：<br />
&nbsp;&nbsp; 1）发送路径中的参数有中文，在服务器段接收参数值是乱码<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 例如：<br />
&nbsp;&nbsp; var url="a.jsp?name=小李"；<br />
&nbsp;&nbsp; xmlHTTP.open ("post",url,true); <br />
&nbsp;&nbsp; 解决办法：<br />
&nbsp;&nbsp; 利用javascript的提供的escape()或encodeURI()方法<br />
&nbsp;&nbsp; 例如：<br />
&nbsp;&nbsp; 客户端：<br />
&nbsp;&nbsp; var url="a.jsp?name=小李"；<br />
&nbsp;&nbsp; url=encodeURI(url); <br />
&nbsp;&nbsp; url=encodeURI(url); //两次，很关键[具体为什么，我也不清楚]<br />
&nbsp;&nbsp; /********************************************/<br />
&nbsp;&nbsp; 也有人写成var url="a.jsp?name=escape("小李")"；<br />
&nbsp;&nbsp; 功能和encodeURI方法类似。<br />
&nbsp;&nbsp; /********************************************/<br />
&nbsp;&nbsp; xmlHTTP.setrequestheader("cache-control","no-cache");&nbsp; <br />
&nbsp;&nbsp; xmlHTTP.setrequestheader("Content-Type","application/x-www-form-urlencoded"); <br />
&nbsp;&nbsp; xmlHTTP.setrequestheader("contentType","text/html;charset=uft-8")//指定发送数据的编码格式<br />
&nbsp;&nbsp; xmlHTTP.open ("post",url,true); <br />
&nbsp;&nbsp; 服务器端：<br />
&nbsp;&nbsp; String name = request.getParameter("name"); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name = java.net.URLDecoder.decode(name, "UTF-8"); <br />
&nbsp;&nbsp; 2）返回来的responseText或responseXML的值中含有中文是乱码<br />
&nbsp;&nbsp; 原因：AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的，如果服务器段发送的数据不是UTF-8的格式，那么接收responseText或responseXML的值有可能为乱码。<br />
&nbsp;&nbsp; 解决办法：在服务器指定发送数据的格式：<br />
&nbsp;&nbsp; 在jsp文件中：<br />
&nbsp;&nbsp; response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件<br />
&nbsp;&nbsp; 或是<br />
&nbsp;&nbsp; response.setContentType("text/xml;charset=UTF-8");//返回的xml文件</p>
<p>&nbsp;&nbsp; 总结:1)ajax提交数据的格式默认为utf-8,利用javascript的提供的escape()或encodeURI()方法.在服务器端接收的时候要使用java.net.URLDecoder.decode("","UTF-8")方法进行解码.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)xtmlhttp 返回的数据默认的字符编码是utf-8,所以服务器要向客户端发送数据的时候,也要采用utf-8编码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果上述方法仍然解决不了乱码问题,那你尝试一下把jsp,htm,java文件用UTF-8编码格式保存.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总之:前后台数据交互都采用utf-8编码就行了.<br />
<span style="color: red"><strong>下载附件:</strong></span><br />
<a href="/Files/hulizhong/AJAX.pdf">/Files/hulizhong/AJAX.pdf</a></p><img src ="http://www.blogjava.net/hulizhong/aggbug/112416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2007-04-21 11:07 <a href="http://www.blogjava.net/hulizhong/archive/2007/04/21/112416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>