﻿<?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>IT博客-kenlistian-随笔分类-WEB</title><link>http://www.cnitblog.com/kenlistian/category/7041.html</link><description>勤学多思
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 23:10:07 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 23:10:07 GMT</pubDate><ttl>60</ttl><item><title>php中不能get,post数据</title><link>http://www.cnitblog.com/kenlistian/archive/2010/01/23/63930.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Sat, 23 Jan 2010 07:58:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2010/01/23/63930.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/63930.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2010/01/23/63930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/63930.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/63930.html</trackback:ping><description><![CDATA[<p>在php.ini中修改</p> <p> 设置register_globals=ON ;//&nbsp; [Off]可以直接传取php中的变量.</p> <p>不过这个方法是不够安全.如下ini所说.</p> <p>-&gt; register_globals = Off [安全，性能]<br>; 不再为输入数据注册全局变量(POST, GET, cookies, 环境变量, 服务器变量)<br>; 不要使用$foo，而要使用$_REQUEST["foo"](包含任何通过请求传送的数据，即：POST, GET, cookies, 环境变量, 服务器变量),<br>; 或使用指定的$_GET["foo"], $_POST["foo"], $_COOKIE["foo"], $_FILES["foo"](不包含在$_REQUEST数组中), 这取决于请求来自何处。<br>; 同时，你可以查看import_request_variables()函数（将 GET／POST／Cookie 变量导入到全局作用域中）。<br>; 注意，register_globals将在下一个版本中被废除(默认关闭)，因为它总是带来太多的安全问题。<br></p> <p>&nbsp; 但是老代码中若存在非_POST类型包括的代码,可以直接通过在inc文件中添加变换不用修改以前变量.而且这样更可以延续以前的对变量处理方式.</p> <p>foreach(Array('_GET','_POST','_COOKIE') as $_request)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($$_request as $_k =&gt; $_v)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ${$_k} =&nbsp; $_v;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //直接将$_Post,$_Get等中的变量替换出来.</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }</p> <p>当然必须考虑到处理post,get的数据,故对$_v作为参数传入处理函数.</p> <p>function MagicQuotes(&amp;$svar) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!get_magic_quotes_gpc()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( is_array($svar) ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($svar as $_k =&gt; $_v) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $svar[$_k] = MagicQuotes($_v);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $svar = addslashes($svar);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $svar;<br>&nbsp;&nbsp;&nbsp;&nbsp; } </p> <p><br>&nbsp;&nbsp; 则需要修改上为即可. <p>&nbsp; ${$_k}=MagicQuotes($_v); <img src ="http://www.cnitblog.com/kenlistian/aggbug/63930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2010-01-23 15:58 <a href="http://www.cnitblog.com/kenlistian/archive/2010/01/23/63930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windowlivewrite出问题了，取代iis的第三方软件</title><link>http://www.cnitblog.com/kenlistian/archive/2008/05/08/43502.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 08 May 2008 04:39:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/05/08/43502.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/43502.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/05/08/43502.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/43502.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/43502.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 现在郁闷，自己的iis老是死掉，不是报500错误，就是登陆不上，微软的东西<br>的确不错，但是为啥老是有点小问题，连个widnowlivewrite也打不开，连页面弹不出。<br>功能不错，但是在应用方面，总是比不上那些短小精悍的一些软件。<br>&nbsp;&nbsp; 比如现在我写这个博客，就是在editplus下开个页面操作，虽然不能一点就发布的功能，<br>但是，也多多少少的满足了简单操作的要求，把自己所写粘贴上去，发布下就行了。<br><br>&nbsp;&nbsp; 在自己机子上调试web程序，大可不必非要装iis，装一个第三方的web服务软件，能满足<br>支持asp，javascript功能即可。那么netbox就足以满足要求。<br><br>&nbsp;netbox&nbsp;&nbsp; 这个在宣传上已经说达到商用级别了，就是说可以取代iis服务而应用于商业化。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 至于是否真正支持商业化，其性能在效率上，稳定性上还需要更多实用来考虑。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在我自己机子上调试用，装个netbox比iis则比简捷得多。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就是不知道是否支持asp。net。<br>&nbsp;转一个对netbox的详细描述吧<br>
<table style="WIDTH: 729px; BORDER-COLLAPSE: collapse; HEIGHT: 198px" cellSpacing=0 cellPadding=3 border=1>
    <tbody>
        <tr>
            <td>
            <p>NetBox 是一个使用脚本语言进行应用软件开发与发布的开发环境和运行平台，<br>它是除了apache和微软的IIS和PWS之外的第四个可以运行ASP的应用服务器。</p>
            <p>&nbsp;NetBox 是一个全新概念的开发平台，它提供了业界最快速的用于开发 Internet <br>&nbsp;商业应用的开发和编译工具。<br>&nbsp;NetBox 支持包括 JavaScript、VBScript、Perl 等目前应用最为广泛的脚本语言<br>&nbsp;来构建功能强大和性能稳定的应用服务器、网络服务器以及 HTML-Based 网络多<br>&nbsp;媒体桌面应用。<br>&nbsp;<br>&nbsp;NetBox 支持目前最为流行的XML 和 Web Service 工业标准和 ASP、COM、.NET 等<br>&nbsp;流行标准，NetBox 对第三方数据库的完美支持使您新构建的商务应用可以容易的<br>&nbsp;将已有的应用系统整合进来，从而充分利用现有的 IT 资源，大大的节约投资。<br>&nbsp;<br>&nbsp; NetBox 提供的 SSL、TLS 安全协议、RSA、DES 等加密算法和独立于应用程序的<br>&nbsp; 虚拟机技术使您的数据得到最大限度的保护。NetBox 提供将应用部署到无线设<br>&nbsp; 备的能力。NetBox 提供将您的应用编译成独立可执行文件的能力，极大的加快<br>&nbsp; 运行速度和代码安全性。使用 NetBox 开发，大大提高了应用系统的可扩展性、<br>&nbsp; 稳定性和安全性。NetBox 的出现也首次让应用软件开发商能够如此快速和容易<br>&nbsp; 的构建完整的基于 Internet 强大应用。</p>
            <p>　NetBox Development Platform 开发 Server Application 和 Desktop Application，<br>&nbsp;编译Web应用成独立可执行文件：<br>　支持 JavaScript、VBScript、Perl 等脚本语言支持 XML 和 Web Service兼容 Active Server Pages <br>　支持 COM 和 .NET 组件 　<br>&nbsp; 支持 SSL 3.0、TLS 　　内置 RSA、DES、3DES、SHA、MD5 　<br>　提供可编程的安全虚拟机用于运行第三方程序 　　<br>&nbsp; 支持通过 ADO 和 ODBC 访问几乎所有的大型数据库<br>&nbsp; 支持系统硬件设备 RS232、RS485 等 　　<br>&nbsp; 支持基于 Microsoft、CISCO 和其他厂商的群集技术　　<br>&nbsp; 兼容 Windows Script Components 并提供编译支持 　　<br>&nbsp; 支持 WAP、WML构建 Web Service 和 Internet 应用程序</p>
            <p>　NetBox 提供一套完整的脚本语言开发环境，提供超轻量脚本引擎和极快的 Web Server，<br>&nbsp;&nbsp; 桌面应用对象轻松开发出基于 HTML 界面整合多种媒体的 XML 桌面应用。</p>
            <p>　　NetBox 提供 Microsoft IIS 5.0 兼容的 Active Server Pages 模块，不用修改代码直接<br>&nbsp;&nbsp; 将已经存在的使用 ASP 开发的应用程序移植到 NetBox 平台上来，也可以直接使用已经存<br>&nbsp;&nbsp; 在所有 COM 组件。通过修改一部分代码，用 NetBox 的高性能对象大大的提高运行速度。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; 区别于 IIS，NetBox 在 ASP 中加入对 .NET 对象的直接支持，并且可以编译ASP引擎和<br>&nbsp;&nbsp;&nbsp; 代码到独立执行文件中。</p>
            <p>　通过 ADO 和 ODBC，NetBox 开发的应用可以访问几乎所有的大型数据库和桌面数据库。<br>&nbsp; 通过对XML的集成，加强了和外部应用和数据的集成能力，新加入的对 SOAP、UDDI、WSDL，<br>&nbsp;&nbsp; 方便构建出下一代 Internet 应用程序。</p>
            <p>　无论是开发简单的桌面应用，或是复杂的 Internet 应用，还是下一代的 Web Service 应用，<br>&nbsp;&nbsp; 你都可以从 NetBox 中得到巨大的帮助。</p>
            <p>　　NetBox 提供大量开发部件方便脚本应用的开发，提供开发与发布两种运行模式，保障代码安全，<br>&nbsp;&nbsp; 方便应用部署，并且提供了方便的调试手段以提高应用开发效率。</p>
            <p>　　适用范围</p>
            <p>　　1.对于 WEB 应用，可以迅速将已有的 iis+asp 的应用平滑移植到 NetBox 应用中，除极少数高级编程外，<br>&nbsp;&nbsp;&nbsp;&nbsp; 代码不需要任何修改，同时 NetBox 还提供大量扩展部件，使得 WEB 应用更加方便。<br>&nbsp;&nbsp;&nbsp;&nbsp; 2由于 NetBox 可以将全部代码最终发布成为应用程序，保护了开发人员的利益和代码的完整性。<br>&nbsp;&nbsp;&nbsp;&nbsp; 3，NetBox 还可以方便地编写更多的桌面应用、系统服务器应用、定制网络应用等等。</p>
            <p>　　运行环境要求</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp; 最低要求只需要 Windows 98 或者 Windows NT + IE4 即可运行。<br>&nbsp;&nbsp;&nbsp;&nbsp; 而如果需要使用系统其他部件(比如 ado)，则需要根据系统情况，如果系统本身未缺省安装，需要自行安装。<br>&nbsp;&nbsp;&nbsp; 下面列出的是经过测试的所有系统平台：<br>　　Windows 98 　　<br>&nbsp;&nbsp;&nbsp; Windows 98 SE 　　<br>&nbsp;&nbsp;&nbsp; Windows ME 　　<br>&nbsp;&nbsp;&nbsp; Windows NT+IE4 　　<br>&nbsp;&nbsp;&nbsp; Windows 2000 　　<br>&nbsp;&nbsp;&nbsp; Windows XP 　　<br>&nbsp;&nbsp;&nbsp; Windows .NET Server</p>
            </td>
        </tr>
    </tbody>
</table>
<p><br>关于netbox的下载和使用说明：&nbsp; <a href="http://www.netbox.cn:88/document/">http://www.netbox.cn:88/document/</a><br>&nbsp;netbox下载：&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.netbox.cn:88/download/nbsetup.EXE">http://www.netbox.cn:88/download/nbsetup.EXE</a><br><br>再摘抄下关于架构配置的方法：<br><br>　1.安装后，在要测试的网站(或者网页)的文件夹下建一个文件，扩展名为.box。<br>&nbsp; 　复制下面代码，看懂后修改下.</p>
<p>&nbsp;&nbsp;&nbsp; 2.配置模板</p>
<p>　　Dim httpd<br>　　Shell.Service.RunService "NBWeb", "NetBox Web Server", "NetBox Http Server Sample"</p>
<p>　　'---------------------- Service Event ---------------------<br>　　Sub OnServiceStart()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　Set httpd = CreateObject("NetBox.HttpServer")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　If httpd.Create("", 80) = 0 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set host = httpd.AddHost("", "\wwwroot")<br>&nbsp;&nbsp;&nbsp; 　　 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; host.EnableScript = true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 　 　&nbsp;&nbsp;host.AddDefault "index.htm"<br>&nbsp;&nbsp;&nbsp; 　 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　 host.AddDefault "index.html"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;　 &nbsp;&nbsp; 　 host.AddDefault "index.asp"<br>&nbsp;&nbsp;&nbsp; 　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; host.AddDefault "default.asp"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 　 　 host.AddDefault "default.htm"<br>&nbsp;&nbsp;&nbsp; 　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　 &nbsp;&nbsp;host.AddDefault "default.html"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 　　&nbsp; httpd.Start<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;　else<br>&nbsp;&nbsp;&nbsp; 　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　Shell.Quit 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;　&nbsp; end if<br>　　End Sub<br>　<br>&nbsp; 　Sub OnServiceStop()<br>&nbsp;&nbsp;&nbsp; 　&nbsp;　httpd.Close<br>　 End Sub</p>
<p>　　Sub OnServicePause()<br>&nbsp;　&nbsp;&nbsp;&nbsp; 　httpd.Stop<br>　　End Sub</p>
<p>　　Sub OnServiceResume()<br>&nbsp;　　&nbsp;&nbsp;&nbsp; httpd.Start<br>　　End Sub</p>
<p>&nbsp;&nbsp;&nbsp; 上面中有一句是<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set host = httpd.AddHost("", "\wwwroot")，</p>
<p>&nbsp;&nbsp;&nbsp; 它就是你的网站的文件夹，如果你的文件夹不是这个，改。<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 80是端口，可改，访问时需打上端口号。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; index.htm是设置的默认首页的格式，可以调节顺序，<br>&nbsp; &nbsp;&nbsp; 如把asp文件放在前面。<br>&nbsp;&nbsp;&nbsp;&nbsp; 如你的网站的首页或者网页名字不是上面的几种，加。</p>
<p>&nbsp; 3.运行BOX文件，有对外IP也可直接对外发布网站或者网页了。<br><br><br><br>打包成exe方法：<br><br>　1. 建一个文件夹，在该文件夹下面放置.box配置文件，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同一目录下放置你的整个网站的文件夹。<br>&nbsp;&nbsp;<br>&nbsp; &nbsp; 2. 打开netbox deployment wizard(装好netbox后会在开始菜单里面有)，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在H:\wwwroot\homepage\下面建立了pages文件夹，用于放置我们做好的网页文件，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在和pages同文件目录下面，放置该网页(网站)的配置文件"mypage.box"，在启动中<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选择 "mypage.box"，输出文件随便取一个名字。(本例中取homepage.exe)</p>
<p>&nbsp;&nbsp; 3. 按"build"就可以生成了一个exe文件了。</p>
<p>&nbsp;&nbsp;&nbsp;4. 测试<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 双击运行该可执行程序，直接在浏览器中输入 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://localhost/">http://localhost/</a>查看。</p>
<p>&nbsp;&nbsp; 5. 以服务方式运行。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　因为这个例程是以服务方式创建的 Web 服务器，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用：myapp -install<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　&nbsp;&nbsp;&nbsp;&nbsp; 可安装为服务，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　如需要卸载服务，执行下面的命令：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myapp -remove <br><br>&nbsp;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;<br>&nbsp;&nbsp; <br></p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/43502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-05-08 12:39 <a href="http://www.cnitblog.com/kenlistian/archive/2008/05/08/43502.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flex的概念介绍（转吧）</title><link>http://www.cnitblog.com/kenlistian/archive/2008/05/07/43480.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Wed, 07 May 2008 12:11:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/05/07/43480.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/43480.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/05/07/43480.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/43480.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/43480.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;</p> <p>1.flex是什么。<a title="http://www.wangchao.net.cn/bbsdetail_56449.html" href="http://www.wangchao.net.cn/bbsdetail_56449.html">http://www.wangchao.net.cn/bbsdetail_56449.html</a></p> <table cellspacing="0" cellpadding="2" width="916" border="2"> <tbody> <tr> <td valign="top" width="912"> <p>Flex 是什么? flex和Flash是什么关系？flex 解决什么问题？flex和J2EE/.net是什么关系？  <p>Flex 是 Macromedia发布的presentation server（展现服务），<br>它是Java Web container或者.net server的一个应用，<br>根据.mxml文件（纯粹的xml描述文件和actionscript）<br>产生相应得.swf文件，传送到客户端，由客户端的flash player或者shockwave player解释执行，<br>给用户以丰富的客户体验。  <p>大名鼎鼎的Macromedia Flash是强大的矢量动画编辑工具，<br>在作动画起家之后，Flash一直在谋求rich internet application(ria富客户端)的霸主地位，  <p>最有影响的是，已经推出了面向对象的编成脚本actionscript2.0，并且建立起类似于java Swing<br>的类库和相应component(组件)。  <p>Flex是通过java或者.net等非Flash途径，解释.mxml文件组织components，并生成相应得.swf文件。  <p>Flex的component和flash的component很相似，但是有所改进增强。  <p>运用Flash是完全可以做到flex的效果的，为什么还需要flex呢？我理解这里面有两个原因：  <p>1，为了迎合更多的developers（开发者）。<br>&nbsp;&nbsp;&nbsp; Flash天生是为了designer（设计者）设计的，界面还有flash的动画概念和写程序的开发人员格格不入，<br>&nbsp;&nbsp;&nbsp; 为了吸引更多的JSP/ASP/PHP等程序员，<br>&nbsp;&nbsp;&nbsp; Macromedia推出了Flex用非常简单的.mxml来描述界面和jsp/asp/php程序人员使用.(x/d)html非常相似，<br>&nbsp;&nbsp;&nbsp; 而且mxml更加规范化、标准化。  <p>2，为了一个标准。大家一定听说过微软下一代系统longhorn，<br>&nbsp;&nbsp; 在longhorn推出的同时微软也会推出新的语言xaml，一种界面描述语言，<br>&nbsp;&nbsp;&nbsp; 与之相应的就是smart client和flex非常相似的东西。<br>&nbsp;&nbsp;&nbsp; Mxml和Xaml的也很相似… …由此带来的一些列好处就不用我说了。  <p>&nbsp;&nbsp; Flex和j2ee/.net其实没什么关系，Macromedia用java做出来个应用把flash的技术融合到j2ee里面，<br>&nbsp;&nbsp; 再用.net的技术做出来个.net应用把flash技术融合到.net里面去；应该说flex解决了j2ee里面和.net<br>&nbsp;&nbsp; 最繁琐的问题那就是web 客户端的问题。<br>&nbsp;&nbsp; 微软比较卑鄙在ie里面built-in（事先安装好了）很多空间，可以被.net调用比如DataGrid，<br>&nbsp;&nbsp; java就没有办法啦，只能用最原始的html一个tag一个tag地print，真是头疼，<br>&nbsp;&nbsp; 还有客户端的JavaScript是最难调试的，不论java还是.net都束手无策。</p></td></tr></tbody></table> <p>&nbsp;</p> <p>2.推荐flex ：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flex 主站研究：<a title="http://www.flex.org/" href="http://www.flex.org/">http://www.flex.org/</a>&nbsp; 专业回答了flex能做啥，做成啥样的效果。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 到国内坛中看看：&nbsp;&nbsp;&nbsp;&nbsp; <a title="http://www.earthplayer.com/bbs/index.php" href="http://www.earthplayer.com/bbs/index.php">http://www.earthplayer.com/bbs/index.php</a></p> <p>&nbsp;</p> <p>3. flex细辩</p> <p>&nbsp; 其实这个是属于rai技术的一个支端，是Macromedia 拿出的一个实现方案，</p> <p>&nbsp; 摘抄： <p>&nbsp; Flex is a framework that helps you build dynamic, interactive rich Internet applications. Flex applications are delivered on the web via the Flash Player or to the desktop via <a href="http://www.adobe.com/go/air">Adobe AIR</a>.  <p>&nbsp;&nbsp; You can build applications using the <a href="http://www.adobe.com/go/tryflex?sdid=">free Flex SDK</a> or <a href="http://www.adobe.com/go/tryflex?sdid=ZFCT">Flex Builder</a>, an Eclipse based IDE. <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Check out <a href="http://www.adobe.com/devnet/flex/flex_cf.html">Flex for ColdFusion developers</a>.  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Check out <a href="http://www.adobe.com/devnet/flex/flex_java.html">Flex for Java developers</a>.  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Check out <a href="http://www.adobe.com/devnet/flex/flex_net.html">Flex for .NET developers</a>.  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Check out <a href="http://www.adobe.com/devnet/flex/flex_php.html">Flex for PHP developers</a>. <p>&nbsp; <p>教学flex：</p> <p>&nbsp;&nbsp; <a title="http://learn.adobe.com/wiki/display/Flex/Getting+Started;jsessionid=2220BBEC6C61077EAA12FA09E7F7E7C5" href="http://learn.adobe.com/wiki/display/Flex/Getting+Started;jsessionid=2220BBEC6C61077EAA12FA09E7F7E7C5">http://learn.adobe.com/wiki/display/Flex/Getting+Started;jsessionid=2220BBEC6C61077EAA12FA09E7F7E7C5</a></p><img src ="http://www.cnitblog.com/kenlistian/aggbug/43480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-05-07 20:11 <a href="http://www.cnitblog.com/kenlistian/archive/2008/05/07/43480.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html 中select选取初值方法</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/21/42579.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Mon, 21 Apr 2008 06:55:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/21/42579.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42579.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/21/42579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42579.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42579.html</trackback:ping><description><![CDATA[<p>通过select中属性selected&nbsp;来定义初值。<br>&nbsp; 如下：<br>&nbsp;&lt;select size="1" name="item" onChange="location=this.options[this.selectedIndex].value"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;option value="?s_ServiceId=0" &lt;%If s_ServiceId=0 Then%&gt;<span style="COLOR: red">selected </span>&lt;%End if%&gt;&gt;全部&lt;/option&gt;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set rs_lei = server.createobject("adodb.recordset")&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sql = "select * from tb"&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs_lei.open sql,conn,1,1&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do while not rs_lei.eof<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if rs_lei("s_ServiceId") &lt;&gt; 0 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;option value="?s_ServiceId=&lt;%=rs_lei("s_ServiceId")%&gt;" &lt;%If s_ServiceId=rs_lei("s_ServiceId") Then%&gt;<span style="COLOR: red">selected </span>&lt;%End if%&gt;&gt;&lt;%=rs_lei("s_Service")%&gt;&lt;/option&gt;</p>
<p>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%end if<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; rs_lei.movenext&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; loop&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs_lei.close&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs_lei = Nothing<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<br>&nbsp;&lt;/select&gt;<br><br></p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-21 14:55 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/21/42579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>asp跳转大汇总</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/16/42442.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Wed, 16 Apr 2008 09:22:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/16/42442.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42442.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/16/42442.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42442.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42442.html</trackback:ping><description><![CDATA[网上的帖子贴来贴去，的确都是差不多，贴在自己的博客上也不是图个<br>什么，只是每次查询时不再用google搜，直接在自己博客copy用一下。<br>图个实用而已。<br><font color=black size=2><br>第一种：<br>&nbsp;&nbsp;&nbsp; &lt;script language="javascript" type="text/javascript"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.location.href="login.jsp?backurl="+window.location.href; <br>&nbsp;&nbsp;&nbsp; &lt;/script&gt;
<pre>第二种：<br>&nbsp;&nbsp;&nbsp; &lt;script language="javascript"&gt;<br>&nbsp;alert("返回");<br>&nbsp;window.history.back(-1);<br>&nbsp;&nbsp; &lt;/script&gt;</pre>
<pre>第三种：<br>&nbsp;&nbsp; &lt;script language="javascript"&gt;<br>&nbsp;window.navigate("top.jsp");<br>&nbsp; &lt;/script&gt;</pre>
<pre>第四种：<br>&nbsp;&nbsp; &lt;script language="JavaScript"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.location='top.htm';<br>&nbsp;&nbsp; &lt;/script&gt;</pre>
<pre>第五种：<br>&nbsp;&nbsp; &lt;script language="javascript"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("非法访问！");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; top.location='xx.jsp';<br>&nbsp;&nbsp; &lt;/script&gt;</pre>
<pre><br>javascript中弹出选择框跳转到其他页面 </pre>
<pre>&lt;script language="javascript"&gt;<br>function logout(){<br>&nbsp;&nbsp; if (confirm("你确定要注销身份吗？\n是－选择确定，否-选择取消")){<br>&nbsp;&nbsp;&nbsp;&nbsp; window.location.href="logout.asp?act=logout"<br>&nbsp;&nbsp; }<br>}<br>&lt;/script&gt;</pre>
<pre><br>&lt;script language="javascript"&gt;<br>function logout(){<br>&nbsp;&nbsp;&nbsp; alert("你确定要注销身份吗？");<br>&nbsp;&nbsp;&nbsp; window.location.href="logout.asp?act=logout"<br>}<br>&lt;/script&gt;</pre>
<pre>ASP中直接跳转到其他页面<br>&lt;% response.redirect "logont.asp" %&gt;</pre>
<pre><br>Html中确认后弹出新页面 <br>function Del(id)<br>{ <br>&nbsp;&nbsp; if (confirm("你确定要删除吗？"))<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.open("otherfile.asp?ID="+id+"&amp;act=del","top","width=640,height=400")<br>&nbsp;&nbsp; }<br>}</pre>
<pre>Html中确认后跳转到其他页面 <br>function Del(URL)</pre>
<pre>{<br>&nbsp;&nbsp; if (confirm("你确定要删除吗？"))<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //URL="otherfile.htm"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.location.href=URL<br>&nbsp;&nbsp; }<br>}</pre>
<pre><br>按钮式：　　&lt;INPUT name="pclog" type="button" value="GO" onClick="location.href='http://asdfa.cn/'"&gt;</pre>
<pre>链接式：&nbsp; 　&lt;a href="javascript:history.go(-1)"&gt;返回上一步&lt;/a&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　&lt;a href="&lt;%=Request.ServerVariables("HTTP_REFERER")%&gt;"&gt;返回上一步&lt;/a&gt;</pre>
<pre>直接跳转式：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 　　&lt;script&gt;window.location.href='http://www.asdfas.cn';&lt;/script&gt;</pre>
<pre>开新窗口：<br>&nbsp;&nbsp;&nbsp; 　　&lt;a href="javascript:" onClick="window.open('http://www.asdasa.cn/235.html','','height=500,width =611,scrollbars=yes,status=yes')"&gt;ddasdfasd&lt;/a&gt;</pre>
<pre><br>1.</pre>
<pre>&lt;script language="javascript"&gt;<br>&nbsp;&nbsp;&nbsp; window.location = "<a href="http://www.baidu.com/">http://www.baidu.com</a>";<br>&lt;/script&gt;</pre>
<pre>2</pre>
<pre>&lt;script language="javascript"&gt;<br>&nbsp;&nbsp;&nbsp; document.location = "<a href="http://www.baidu.com/">http://www.baidu.com</a>";<br>&lt;/script&gt;</pre>
<pre>3： （带进度条）</pre>
<pre>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Language" content="zh-cn"&gt;<br>&lt;meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"&gt;<br>&lt;title&gt;跳转到baidu.com&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;form name=loading&gt;<br>&lt;P align=center&gt;&lt;FONT face=Arial color=#0066ff size=2&gt;loading...&lt;/FONT&gt;</pre>
<pre>&lt;INPUT style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bolder; PADDING-BOTTOM: 0px; COLOR: #0066ff; BORDER-TOP-style: none; PADDING-TOP: 0px; FONT-FAMILY: Arial; BORDER-RIGHT-style: none; BORDER-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT-style: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-style: none"&nbsp; size=46 name=chart&gt;<br>&lt;BR&gt;<br>&lt;INPUT style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; COLOR: #0066ff; BORDER-BOTTOM: medium none; TEXT-ALIGN: center" size=47 name=percent&gt;<br>&lt;script language="javascript"&gt;<br>var bar=0<br>var line="||"<br>var amount="||"<br>count()</pre>
<pre><br>function count(){<br>&nbsp;&nbsp;&nbsp; bar=bar+2<br>&nbsp;&nbsp;&nbsp; amount =amount + line<br>&nbsp;&nbsp;&nbsp; document.loading.chart.value=amount<br>&nbsp;&nbsp;&nbsp; document.loading.percent.value=bar+"%"<br>&nbsp;&nbsp;&nbsp; if (bar&lt;99){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setTimeout("count()",100);<br>&nbsp;&nbsp;&nbsp; }else{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.location = "<a href="http://www.baidu.com/">http://www.baidu.com/</a>";<br>&nbsp;&nbsp;&nbsp; }<br>}<br>&lt;/script&gt;<br>&lt;/P&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</pre>
<pre>&nbsp;</pre>
<pre>&nbsp;</pre>
<pre><br><br>&nbsp;</pre>
</font>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42442.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-16 17:22 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/16/42442.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>textarea相关的提交</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/15/42384.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 15 Apr 2008 03:55:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/15/42384.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42384.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/15/42384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42384.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42384.html</trackback:ping><description><![CDATA[<p>1.如何提交textarea中内容<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &lt;form name= "form1" action="InsertWord.asp" method='get'&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;textarea id="edtInputWord" name ="txt" rows="25" cols="38"&gt;&lt;/textarea&gt;&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="submit" value="submit"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 采用method="get/post"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其提交参数提取textarea中name名称。<br><br><br>2.提交的是一个文本区中内容，如果每行是一个字段，则可以如下解析。<br>&nbsp;&nbsp; Dim arr_lines<br>&nbsp;&nbsp; strText = Request.Form("txt")<br>&nbsp;&nbsp; strText = Replace(strText, chr(10), "&lt;br&gt;")<br>&nbsp;&nbsp; arr_lines = split(strText, "&lt;br&gt;")<br>&nbsp;&nbsp; for i = 0 to ubound(arr_lines)<br>&nbsp;&nbsp;&nbsp;&nbsp; ....<br>&nbsp;&nbsp; next<br><br>3.如何通过快捷键提交。<br>a。CTRL+ENTER 提交<br>&lt;script language=javascript&gt;</p>
<p>ie = (document.all)? true:false<br>if (ie)<br>{<br>&nbsp;&nbsp; function ctlent(eventobject)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(event.ctrlKey &amp;&amp; window.event.keyCode==13)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.document.form1.submit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}<br>&lt;/script&gt;</p>
<p>&lt;form action="post.Html" method=POST name=form1&gt;<br>&lt;textarea cols=95 name=Content rows=12 wrap=virtual onkeydown=ctlent()&gt;<br>&lt;/textarea&gt;<br>&lt;input type=Submit value="Submit" name=Submit&gt;<br>&lt;/form&gt;</p>
<p>b。Accesskey 提交<br>&lt;form action="post.html" method=POST name=form1&gt;<br>&lt;textarea &gt;&lt;/textarea&gt;<br>&lt;br&gt;&lt;input type=submit accessKey="S" value=提交(Alt+s)&gt;<br></p>
<p><br><br><br>&nbsp;</p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-15 11:55 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/15/42384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript常用的几个验证表单（转收）</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/14/42360.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Mon, 14 Apr 2008 10:17:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/14/42360.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42360.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/14/42360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42360.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42360.html</trackback:ping><description><![CDATA[<p>1. 长度限制<br>&lt;script&gt;<br>function test()<br>{<br>&nbsp;&nbsp;&nbsp; if(document.a.b.value.length&gt;50)<br>&nbsp; &nbsp;{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; alert("不能超过50个字符！");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; document.a.b.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;return false;<br>&nbsp;&nbsp; }<br>}<br>&lt;/script&gt;</p>
<p>&lt;form name=a &nbsp;submit="return test()"&gt;<br>&lt;textarea name="b" cols="40" wrap="VIRTUAL" rows="6"&gt;&lt;/textarea&gt;<br>&lt;input type="submit" name="Submit" value="check"&gt;<br>&lt;/form&gt;</p>
<p>2. 只能是汉字<br>&lt;input nkeyup="value="/oblog/value.replace(/[^\u4E00-\u9FA5]/g,'')"&gt;<br></p>
<p>3." 只能是英文<br>&lt;script. language=javascript&gt;<br>function onlyEng()<br>{<br>&nbsp;&nbsp;&nbsp; if(!(event.keyCode&gt;=65&amp;&amp;event.keyCode&lt;=90))<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; event.returnvalue=false;<br>}<br>&lt;/script&gt;<br>&lt;input nkeydown="onlyEng();"&gt;</p>
<p>4. 只能是数字<br>&lt;script. language=javascript&gt;<br>function onlyNum()<br>{<br>if(!((event.keyCode&gt;=48&amp;&amp;event.keyCode&lt;=57)||(event.keyCode&gt;=96&amp;&amp;event.keyCode&lt;=105)))<br>&nbsp; //考虑小键盘上的数字键<br>&nbsp;&nbsp;&nbsp; event.returnvalue=false;<br>}<br>&lt;/script&gt;<br>&lt;input nkeydown="onlyNum();"&gt;</p>
<p>5. 只能是英文字符和数字<br>&lt;input nkeyup="value="/oblog/value.replace(/[\W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"&gt;</p>
<p>6. 验证油箱格式<br>&lt;SCRIPT. LANGUAGE=javascript. RUNAT=Server&gt;<br>function isEmail(strEmail) <br>{<br>&nbsp;&nbsp;&nbsp; if (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("oh");<br>}<br>&lt;/SCRIPT&gt;<br>&lt;input type=text nblur=isEmail(this.value)&gt;</p>
<p>7. 屏蔽关键字(这里屏蔽***和****)<br>&lt;script. language="javascript1.2"&gt;<br>function test() <br>{<br>&nbsp;&nbsp;&nbsp; if((a.b.value.indexOf ("***") == 0)||(a.b.value.indexOf ("****") == 0)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(":)");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.b.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;}<br>}<br>&lt;/script&gt;<br>&lt;form. name=a nsubmit="return test()"&gt;<br>&lt;input type=text name=b&gt;<br>&lt;input type="submit" name="Submit" value="check"&gt;<br>&lt;/form&gt;</p>
<p>8. 两次输入密码是否相同<br>&lt;FORM. METHOD=POST ACTION=""&gt;<br>&lt;input type="password" id="input1"&gt;<br>&lt;input type="password" id="input2"&gt;<br>&lt;input type="button" value="test" nclick="check()"&gt;<br>&lt;/FORM&gt;<br>&lt;script&gt;<br>function check()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with(document.all){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(input1.value!=input2.value)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("false")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input1.value = "";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input2.value = "";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else document.forms[0].submit();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}<br>&lt;/script&gt;<br><br>屏蔽右键 很酷<br>&nbsp; oncontextmenu="return false" ndragstart="return false" nselectstart="return false"<br>加在body中</p>
<p><br>二</p>
<p>2.1&nbsp;&nbsp; 表单项不能为空</p>
<p>&lt;script&nbsp;&nbsp; language="javascript"&gt;<br>&lt;!--<br>function&nbsp;&nbsp; CheckForm()<br>{&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; (document.form.name.value.length&nbsp;&nbsp; ==&nbsp;&nbsp; 0)&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("请输入您姓名!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.form.name.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; false;<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; true;<br>}<br>--&gt;<br>&lt;/script&gt;</p>
<p>2.2&nbsp;&nbsp; 比较两个表单项的值是否相同</p>
<p>&lt;script&nbsp;&nbsp; language="javascript"&gt;<br>&lt;!--<br>function&nbsp;&nbsp; CheckForm()<br>if&nbsp;&nbsp; (document.form.PWD.value&nbsp;&nbsp; !=&nbsp;&nbsp; document.form.PWD_Again.value)&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; alert("您两次输入的密码不一样！请重新输入.");<br>&nbsp; &nbsp;&nbsp; document.ADDUser.PWD.focus();<br>&nbsp; &nbsp;&nbsp; return&nbsp;&nbsp; false;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; return&nbsp;&nbsp; true;<br>}<br>--&gt;<br>&lt;/script&gt;</p>
<p>2.3&nbsp;&nbsp; 表单项只能为数字和"_",用于电话/银行帐号验证上,可扩展到域名注册等</p>
<p>&lt;script&nbsp;&nbsp; language="javascript"&gt;<br>&lt;!--<br>function&nbsp;&nbsp; isNumber(String)<br>{&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; Letters&nbsp;&nbsp; =&nbsp;&nbsp; "1234567890-";&nbsp;&nbsp; //可以自己增加可输入值<br>&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; i;<br>&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; c;<br>&nbsp;&nbsp;&nbsp;&nbsp; if(String.charAt(&nbsp;&nbsp; 0&nbsp;&nbsp; )=='-')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; false;<br>&nbsp;&nbsp;&nbsp;&nbsp; if( String.charAt(&nbsp;&nbsp; String.length&nbsp;&nbsp; -&nbsp;&nbsp; 1&nbsp;&nbsp; )&nbsp;&nbsp; ==&nbsp;&nbsp; '-'&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( i&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; i&nbsp;&nbsp; &lt;&nbsp;&nbsp; String.length;&nbsp;&nbsp; i&nbsp;&nbsp; ++&nbsp;&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c&nbsp;&nbsp; =&nbsp;&nbsp; String.charAt(&nbsp;&nbsp; i&nbsp;&nbsp; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp; (Letters.indexOf(&nbsp;&nbsp; c&nbsp;&nbsp; )&nbsp;&nbsp; &lt;&nbsp;&nbsp; 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; true;<br>}<br><br>function&nbsp;&nbsp; CheckForm()<br>{&nbsp; <br>&nbsp;&nbsp;&nbsp; if(!&nbsp;&nbsp; isNumber(document.form.TEL.value))&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("您的电话号码不合法！");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.form.TEL.focus();<br>return&nbsp;&nbsp; false;<br>}<br>return&nbsp;&nbsp; true;<br>}<br>--&gt;<br>&lt;/script&gt;</p>
<p><br>2.4&nbsp;&nbsp; 表单项输入数值/长度限定</p>
<p>&lt;script&nbsp;&nbsp; language="javascript"&gt;<br>&lt;!--<br>function&nbsp;&nbsp; CheckForm()&nbsp; <br>{&nbsp; <br>if&nbsp;&nbsp;(document.form.count.value&nbsp;&nbsp; &gt;&nbsp;&nbsp; 100&nbsp;&nbsp; ||&nbsp;&nbsp; document.form.count.value&nbsp;&nbsp; &lt;&nbsp;&nbsp; 1)<br>{&nbsp; <br>alert("输入数值不能小于零大于100!");<br>document.form.count.focus();<br>return&nbsp;&nbsp; false;<br>}<br>if&nbsp;&nbsp; (document.form.MESSAGE.value.length&lt;10)<br>{&nbsp; <br>alert("输入文字小于10!");<br>document.form.MESSAGE.focus();<br>return&nbsp;&nbsp; false;<br>}<br>return&nbsp;&nbsp; true;<br>}<br>//--&gt;<br>&lt;/script&gt;</p>
<p>2.5&nbsp;&nbsp; 中文/英文/数字/邮件地址合法性判断</p>
<p>&lt;SCRIPT&nbsp;&nbsp; LANGUAGE="javascript"&gt;<br>&lt;!--</p>
<p>function&nbsp;&nbsp; isEnglish(name)&nbsp;&nbsp; //英文值检测<br>{&nbsp; <br>if(name.length&nbsp;&nbsp; ==&nbsp;&nbsp; 0)<br>return&nbsp;&nbsp; false;<br>for(i&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; i&nbsp;&nbsp; &lt;&nbsp;&nbsp; name.length;&nbsp;&nbsp; i++)&nbsp;&nbsp; {&nbsp; <br>if(name.charCodeAt(i)&nbsp;&nbsp; &gt;&nbsp;&nbsp; 128)<br>return&nbsp;&nbsp; false;<br>}<br>return&nbsp;&nbsp; true;<br>}</p>
<p>function&nbsp;&nbsp; isChinese(name)&nbsp;&nbsp; //中文值检测<br>{&nbsp; <br>if(name.length&nbsp;&nbsp; ==&nbsp;&nbsp; 0)<br>return&nbsp;&nbsp; false;<br>for(i&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; i&nbsp;&nbsp; &lt;&nbsp;&nbsp; name.length;&nbsp;&nbsp; i++)&nbsp;&nbsp; {&nbsp; <br>if(name.charCodeAt(i)&nbsp;&nbsp; &gt;&nbsp;&nbsp; 128)<br>return&nbsp;&nbsp; true;<br>}<br>return&nbsp;&nbsp; false;<br>}</p>
<p>function&nbsp;&nbsp; isMail(name)&nbsp;&nbsp; //&nbsp;&nbsp; E-mail值检测<br>{&nbsp; <br>if(!&nbsp;&nbsp; isEnglish(name))<br>return&nbsp;&nbsp; false;<br>i&nbsp;&nbsp; =&nbsp;&nbsp; name.indexOf("&nbsp;&nbsp; at&nbsp;&nbsp; ");<br>j&nbsp;&nbsp; =&nbsp;&nbsp; name&nbsp;&nbsp; dot&nbsp;&nbsp; lastIndexOf("&nbsp;&nbsp; at&nbsp;&nbsp; ");<br>if(i&nbsp;&nbsp; ==&nbsp;&nbsp; -1)<br>return&nbsp;&nbsp; false;<br>if(i&nbsp;&nbsp; !=&nbsp;&nbsp; j)<br>return&nbsp;&nbsp; false;<br>if(i&nbsp;&nbsp; ==&nbsp;&nbsp; name&nbsp;&nbsp; dot&nbsp;&nbsp; length)<br>return&nbsp;&nbsp; false;<br>return&nbsp;&nbsp; true;<br>}</p>
<p>function&nbsp;&nbsp; isNumber(name)&nbsp;&nbsp; //数值检测<br>{&nbsp; <br>if(name.length&nbsp;&nbsp; ==&nbsp;&nbsp; 0)<br>return&nbsp;&nbsp; false;<br>for(i&nbsp;&nbsp; =&nbsp;&nbsp; 0;&nbsp;&nbsp; i&nbsp;&nbsp; &lt;&nbsp;&nbsp; name.length;&nbsp;&nbsp; i++)&nbsp;&nbsp; {&nbsp; <br>if(name.charAt(i)&nbsp;&nbsp; &lt;&nbsp;&nbsp; "0"&nbsp;&nbsp; ||&nbsp;&nbsp; name.charAt(i)&nbsp;&nbsp; &gt;&nbsp;&nbsp; "9")<br>return&nbsp;&nbsp; false;<br>}<br>return&nbsp;&nbsp; true;<br>}</p>
<p>function&nbsp;&nbsp; CheckForm()<br>{&nbsp; <br>if(!&nbsp;&nbsp; isMail(form.Email.value))&nbsp;&nbsp; {&nbsp; <br>alert("您的电子邮件不合法！");<br>form.Email.focus();<br>return&nbsp;&nbsp; false;<br>}<br>if(!&nbsp;&nbsp; isEnglish(form.name.value))&nbsp;&nbsp; {&nbsp; <br>alert("英文名不合法！");<br>form.name.focus();<br>return&nbsp;&nbsp; false;<br>}<br>if(!&nbsp;&nbsp; isChinese(form.cnname.value))&nbsp;&nbsp; {&nbsp; <br>alert("中文名不合法！");<br>form.cnname.focus();<br>return&nbsp;&nbsp; false;<br>}<br>if(!&nbsp;&nbsp; isNumber(form.PublicZipCode.value))&nbsp;&nbsp; {&nbsp; <br>alert("邮政编码不合法！");<br>form.PublicZipCode.focus();<br>return&nbsp;&nbsp; false;<br>}<br>return&nbsp;&nbsp; true;<br>}<br>//--&gt;<br>&lt;/SCRIPT&gt;</p>
<p>2.6&nbsp;&nbsp; 限定表单项不能输入的字符</p>
<p>&lt;script&nbsp;&nbsp; language="javascript"&gt;<br>&lt;!--</p>
<p>function&nbsp;&nbsp; contain(str,charset)//&nbsp;&nbsp; 字符串包含测试函数<br>{&nbsp; <br>var&nbsp;&nbsp; i;<br>for(i=0;i&lt;charset.length;i++)<br>if(str.indexOf(charset.charAt(i))&gt;=0)<br>return&nbsp;&nbsp; true;<br>return&nbsp;&nbsp; false;<br>}</p>
<p>function&nbsp;&nbsp; CheckForm()<br>{&nbsp; <br>if&nbsp;&nbsp; ((contain(document.form.NAME.value,&nbsp;&nbsp; "%\(\)&gt;&lt;"))&nbsp;&nbsp; ||&nbsp;&nbsp; (contain(document.form.MESSAGE.value,&nbsp;&nbsp; "%\(\)&gt;&lt;")))<br>{&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("输入了非法字符");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.form.NAME.focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp; false;<br>}<br>return&nbsp;&nbsp; true;<br>}<br>//--&gt;<br>&lt;/script&gt;&nbsp; </p>
<p>1. 检查一段字符串是否全由数字组成&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&lt;script. language="Javascript"&gt;&lt;!--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>function checkNum(str){return str.match(/\D/)==null}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>alert(checkNum("1232142141"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>alert(checkNum("123214214a1"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>// --&gt;&lt;/script&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>2. 怎么判断是否是字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>else alert("全是字符");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>3. 怎么判断是否含有汉字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>if (escape(str).indexOf("%u")!=-1) alert("含有汉字");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>else alert("全是字符");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>4. 邮箱格式验证&nbsp;&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>//函数名：chkemail&nbsp;&nbsp;&nbsp;&nbsp; <br>//功能介绍：检查是否为Email Address&nbsp;&nbsp;&nbsp;&nbsp; <br>//参数说明：要检查的字符串&nbsp;&nbsp;&nbsp;&nbsp; <br>//返回值：0：不是 1：是&nbsp;&nbsp;&nbsp;&nbsp; <br>function chkemail(a)&nbsp;&nbsp;&nbsp;&nbsp; <br>{ var i=a.length;&nbsp;&nbsp;&nbsp;&nbsp; <br>var temp = a.indexOf(<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#64;&#39;">'@'</a>);&nbsp;&nbsp;&nbsp;&nbsp; <br>var tempd = a.indexOf('.');&nbsp;&nbsp;&nbsp;&nbsp; <br>if (temp &gt; 1) {&nbsp;&nbsp;&nbsp;&nbsp; <br>if ((i-temp) &gt; 3){&nbsp;&nbsp;&nbsp;&nbsp; <br>if ((i-tempd)&gt;0){&nbsp;&nbsp;&nbsp;&nbsp; <br>return 1;&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>return 0;&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>5. 数字格式验证&nbsp;&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>//函数名：fucCheckNUM&nbsp;&nbsp;&nbsp;&nbsp; <br>//功能介绍：检查是否为数字&nbsp;&nbsp;&nbsp;&nbsp; <br>//参数说明：要检查的数字&nbsp;&nbsp;&nbsp;&nbsp; <br>//返回值：1为是数字，0为不是数字&nbsp;&nbsp;&nbsp;&nbsp; <br>function fucCheckNUM(NUM)&nbsp;&nbsp;&nbsp;&nbsp; <br>{&nbsp;&nbsp;&nbsp;&nbsp; <br>var i,j,strTemp;&nbsp;&nbsp;&nbsp;&nbsp; <br>strTemp="0123456789";&nbsp;&nbsp;&nbsp;&nbsp; <br>if ( NUM.length== 0)&nbsp;&nbsp;&nbsp;&nbsp; <br>return 0&nbsp;&nbsp;&nbsp;&nbsp; <br>for (i=0;i&lt;NUM.length;i++)&nbsp;&nbsp;&nbsp;&nbsp; <br>{&nbsp;&nbsp;&nbsp;&nbsp; <br>j=strTemp.indexOf(NUM.charAt(i));&nbsp;&nbsp;&nbsp;&nbsp; <br>if (j==-1)&nbsp;&nbsp;&nbsp;&nbsp; <br>{&nbsp;&nbsp;&nbsp;&nbsp; <br>//说明有字符不是数字&nbsp;&nbsp;&nbsp;&nbsp; <br>return 0;&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>//说明是数字&nbsp;&nbsp;&nbsp;&nbsp; <br>return 1;&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>6. 电话号码格式验证&nbsp;&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>//函数名：fucCheckTEL&nbsp;&nbsp;&nbsp;&nbsp; <br>//功能介绍：检查是否为电话号码&nbsp;&nbsp;&nbsp;&nbsp; <br>//参数说明：要检查的字符串&nbsp;&nbsp;&nbsp;&nbsp; <br>//返回值：1为是合法，0为不合法&nbsp;&nbsp;&nbsp;&nbsp; <br>function fucCheckTEL(TEL)&nbsp;&nbsp;&nbsp;&nbsp; <br>{&nbsp;&nbsp;&nbsp;&nbsp; <br>var i,j,strTemp;&nbsp;&nbsp;&nbsp;&nbsp; <br>strTemp="0123456789-()# ";&nbsp;&nbsp;&nbsp;&nbsp; <br>for (i=0;i&lt;TEL.length;i++)&nbsp;&nbsp;&nbsp;&nbsp; <br>{&nbsp;&nbsp;&nbsp;&nbsp; <br>j=strTemp.indexOf(TEL.charAt(i));&nbsp;&nbsp;&nbsp;&nbsp; <br>if (j==-1)&nbsp;&nbsp;&nbsp;&nbsp; <br>{&nbsp;&nbsp;&nbsp;&nbsp; <br>//说明有字符不合法&nbsp;&nbsp;&nbsp;&nbsp; <br>return 0;&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp;&nbsp; <br>//说明合法&nbsp;&nbsp;&nbsp;&nbsp; <br>return 1;&nbsp;&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>7. 判断输入是否为中文的函数&nbsp;&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>function ischinese(s){&nbsp;&nbsp; <br>var ret=true;&nbsp;&nbsp; <br>for(var i=0;i&lt;s.length;i++)&nbsp;&nbsp; <br>ret=ret &amp;&amp; (s.charCodeAt(i)&gt;=10000);&nbsp;&nbsp; <br>return ret;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; <br>8. 综合的判断用户输入的合法性的函数&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&lt;script. language="javascript"&gt;&nbsp; <br>//限制输入字符的位数开始&nbsp; <br>//m是用户输入，n是要限制的位数&nbsp; <br>function issmall(m,n)&nbsp; <br>{&nbsp; <br>if ((m&lt;n) &amp;&amp; (m&gt;0))&nbsp; <br>&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp; return(false);&nbsp; <br>&nbsp;&nbsp; }&nbsp; <br>else&nbsp; <br>{return(true);}&nbsp; <br>}&nbsp; <br>&nbsp; <br>9. 判断密码是否输入一致&nbsp; <br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>function issame(str1,str2)&nbsp; <br>{&nbsp; <br>if (str1==str2)&nbsp; <br>{return(true);}&nbsp; <br>else&nbsp; <br>{return(false);}&nbsp; <br>}&nbsp; <br>&nbsp; <br>10. 判断用户名是否为数字字母下滑线<br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>function notchinese(str){<br>var reg=/[^A-Za-z0-9_]/g<br>&nbsp;&nbsp;&nbsp;&nbsp; if (reg.test(str)){<br>&nbsp;&nbsp;&nbsp;&nbsp; return (false);<br>&nbsp;&nbsp;&nbsp;&nbsp; }else{<br>return(true);&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>2.8. form文本域的通用校验函数<br>---------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>作用：检测所有必须非空的input文本，比如姓名，账号，邮件地址等等。<br>该校验现在只针对文本域，如果要针对form里面的其他域对象，可以改变判断条件。</p>
<p>使用方法：在要检测的文本域中加入title文字。文字是在提示信息，你要提示给用户的该字段的中文名。<br>比如要检测用户名<br>html如下&lt;input name="txt_1" title="姓名"&gt;,用可视化工具比如dreamweaver什么的来编辑域。<br>如果要检测数字类型数据的话，再把域的id统一为sz.<br>javascript判断日期类型比较麻烦，所以就没有做日期类型校验的程序了。</p>
<p>函数调用方法：&lt; form&nbsp;&nbsp; submit="return dovalidate()"&gt;</p>
<p>function dovalidate()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; fm=document.forms[0] //只检测一个form,如果是多个可以改变判断条件<br>&nbsp;&nbsp;&nbsp;&nbsp; for(i=0;i&lt;fm.length;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; //检测判断条件，根据类型不同可以修改<br>&nbsp;&nbsp;&nbsp;&nbsp; if(fm[i].tagName.toUpperCase()=="INPUT" &amp;&amp;fm[i].type.toUpperCase()=="TEXT" &amp;&amp; (fm[i].title!=""))<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fm[i].value="/blog/="")//<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_warn1=fm[i].title+"不能为空!";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(str_warn1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fm[i].focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(fm[i].id.toUpperCase()=="SZ")//数字校验<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(isNaN(fm[i].value))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { str_warn2=fm[i].title+"格式不对";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(str_warn2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fm[i].focus();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br>&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;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>} </p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-14 18:17 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/14/42360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 中的大括号意思(备记)</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42219.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 10 Apr 2008 11:14:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42219.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42219.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42219.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42219.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42219.html</trackback:ping><description><![CDATA[<br>基础不扎实啊。没有系统看过javascript，直接看javascript代码，老是发现花括号<br>在javascript中使用，如果仅仅是包个函数体也就得了，但是有时看到一些考究点<br>用法，就像是ruby中的hash用法一样，通过key对应值来表达一个意思时，往往<br>在脑海中当作类似对象而一阅而过。或把它当作json模式晃过。<br><br>今天当了个javasscript的大全（chm格式）仔细查找{}的用法，竟然没有找到用{}<br>各种说明？！（搞什么搞）<br>&nbsp; 翻了下网上资料，学到了所要明白的东西。<br><br>&nbsp;&nbsp; 如下就是我所要的：没在help资料上看到叙述，倒在优秀代码中发现比比皆是都<br>这样定义对象啊。<br><br><br>JavaScript 中的对象其实就是属性（方法）的一个集合，并没有严格意义的类的概念。<br>它提供了另外一种简单的方式来创建对象，即大括号（{}）语法：<br><span style="COLOR: red">&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; property1:statement,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; property2:statement2,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230;,<br>&nbsp;&nbsp;&nbsp;&nbsp; propertyN:statmentN<br>&nbsp;&nbsp;&nbsp; }<br></span><br>&nbsp;&nbsp; 通过大括号括住多个属性或方法及其定义（这些属性或方法用逗号隔开），<br>来实现对象的定义，这段代码就直接定义个了具有n个属性或方法的对象，<br>其中属性名和其定义之间用冒号（:）隔开。<br><br>&nbsp;&nbsp; var user={<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name:"jack",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义了name属性，初始化为jack<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; favoriteColor:["red","green","black","white"],//定义了颜色喜好数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hello:function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义了方法hello<br>&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;&nbsp;&nbsp;&nbsp;&nbsp; alert("hello,"+this.name);<br>&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;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sex:"male"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义了性别属性sex，初始化为sex<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp; 和json格式差不多，不过函数也作为key值来表示，而这在ruby中，也是通用的<br>&nbsp; 格式。不过用=&gt; 来代替：而已。<br><br><br><br><br><br>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-10 19:14 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/10/42219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext学习杂记2</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42209.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 10 Apr 2008 07:06:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42209.html</guid><description><![CDATA[<br>&nbsp;1.&nbsp; 在拿一个提交页面的例子学习，发现老是new Ext.form.Form被提示不是一个容器的错误。查了些资料，原来在开发者log中被删除，在版本2.0后不再支持该类。（<a href="http://extjs.com/forum/showthread.php?t=12866">http://extjs.com/forum/showthread.php?t=12866</a>）<br>&nbsp;&nbsp; 其中，该类中的部分函数也被移除掉，如添加输入控件的fieldset。在看教程中一定要看清楚该版本是属于啥版本，否则搞错了就要费工夫翻源码，找问题了。<br>
<pre class=alt2 dir=ltr style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 6px; BORDER-TOP: 1px inset; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 897px; PADDING-TOP: 6px; BORDER-BOTTOM: 1px inset; HEIGHT: 235px; TEXT-ALIGN: left">src/widgets/form/
Field
- Removed applyTo function (use base render function instead)
Form
- Converted Ext.form.Form to Ext.form.FormPanel (extends Panel instead of BasicForm)
- Removed functions column, fieldset, container, start and end
Layout
- Replaced Ext.form.Layout with Ext.layout.FormLayout
- Changed Fieldset to extend FormLayout instead of form.Layout</pre>
<p>其中更为详细的1.0到2.0的修改移植见：<a href="http://hzjavaeyer.group.javaeye.com/group/blog/134693">http://hzjavaeyer.group.javaeye.com/group/blog/134693</a><br><br>2.有关ext的架构模型（来自i_love_sc，不过好像讲解的是1.0版本的，）<br><br></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXT中所有和数据相关的类都放在Ext.data命名空间下。</p>
<p>&nbsp;&nbsp;&nbsp; * Store:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最主要的对外交互接口，内部保存了一个数据集。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JsonStore<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JsonReader&nbsp;&nbsp;&nbsp; 把代理读取的数据读入数据集。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; * Record:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据集里面的每一条记录。<br>&nbsp;&nbsp;&nbsp; * DataField:&nbsp;&nbsp;&nbsp; 定义了记录每个字段的schema。<br>&nbsp;&nbsp;&nbsp; * DataProxy:&nbsp;&nbsp;&nbsp; 获取数据的代理。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptTagProxy<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpProxy,<br>&nbsp;&nbsp;&nbsp; * DataReader:&nbsp;&nbsp; 把代理读取的数据读入数据集。<br><br><font size=4>&nbsp;Store的实现<br></font><font size=4>&nbsp;&nbsp;&nbsp;&nbsp; 内部用一个Ext.util.MixedCollection（既能够作为map进行索引，又能够作为list进行索引，并且更新数据时会触发事件，并且有一些其它功能的数据结构）作为数据集存放record。store实例的data域指向这个数据集。<br></font><font size=4>&nbsp;&nbsp; 通过proxy加载不同来源的数据，如http remote，memory data等等。<br></font><font size=4>&nbsp;&nbsp; 由于proxy加载过来的数据是异构的，所以通过不同DataReader的实现类来读入数据成为record。</font></p>
<p><font size=4>&nbsp;&nbsp;&nbsp; 当调用load方法时候，就会委托proxy去加载数据。<br></font><font size=4>&nbsp;&nbsp;&nbsp; 在data数据集中数据的数据，添加，修改，删除的时候触发事件。</font></p>
<p><font size=4><br>Store数据加载流程简介</font></p>
<ol>
    <li><font size=4>实例化一个Proxy的实现proxy。</font></li>
    <li><font size=4>实例化一个DataReader的实现reader。</font></li>
    <li><font size=4>实例化一个Store对象store。设置store的proxy与reader。</font></li>
    <li><font size=4>监听store的load事件或者datachange事件。</font></li>
    <li><font size=4>调用store.load()</font></li>
    <li><font size=4>store.load会调用proxy的load方法来加载数据（各种DataSource）。并且把reader作为参数传入。</font></li>
    <li><font size=4>proxy的load方法加载完数据之后，调用传入的reader的read方法，并且把数据作为参数传入。</font></li>
    <li><font size=4>reader的read方法把异构数据读入成record数据集。</font></li>
    <li><font size=4>proxy把reader.read方法生成的record数据集作为参数，回调store。</font></li>
    <li><font size=4>store把数据集添加到或者替换原来的数据集。</font></li>
    <li><font size=4>触发load事件，触发datachange事件。</font></li>
</ol>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-10 15:06 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/10/42209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ext 学习杂记1-模板</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42204.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 10 Apr 2008 05:40:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/10/42204.html</guid><description><![CDATA[<br>Ext 中有模板，其实就是页面代码变量替换前的页面字符串而已。<br>如下：<br>&nbsp; <code>var html = '&lt;a id="{id}" href="{url}" class="nav"&gt;{text}&lt;/a&gt;&lt;br /&gt;';<br><br>&nbsp;var tpl = new Ext.XTemplate(html);&nbsp;&nbsp;&nbsp;&nbsp;//加入字符串<br>&nbsp;tpl.compile();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //编译下，优化性能<br><br><br>&nbsp;填充二行数据，其中id，url，text，就是设置的变量替换。<br>
<pre><code>  tpl.append('blog-roll', {
id: 'link1',
url: 'http://www.jackslocum.com/',
text: "Jack's Site"
});
tpl.append('blog-roll', {
id: 'link2',
url: 'http://www.extjs.com/',
text: "Jack's New Site"
});<br><br><br><br> <br>  如果html太长又不想显示，可以调用函数<code>ellipsis()来截断多余部分，并用...来显示<br></code>  如下：<br>    var content = 'test test test test test test test test';<br> <code>   var myTpl = new Ext.Template('&lt;div&gt;{content:ellipsis(10)}&lt;br/&gt;<br>              &lt;a href="{moreLink}"&gt;Read More&lt;/a&gt;&lt;/div&gt;');<br>  <br><br><br><br><br><br><br><br>  还有其他函数可以处理该字符串：
<ul>
    <li>undef -检查一个值是否为underfined，如果是的转换为空值
    <li>htmlEncode - 转换(&amp;, &lt;, &gt;, and ') 字符
    <li>trim - 对一段文本的前后多余的空格裁剪
    <li>substr(start, length) - 返回一个从指定位置开始的指定长度的子字符串。
    <li>lowercase - 返回一个字符串，该字符串中的字母被转换为小写字母。
    <li>uppercase - 返回一个字符串，该字符串中的字母被转换为大写字母。
    <li>capitalize - 返回一个字符串，该字符串中的第一个字母转化为大写字母，剩余的为小写。
    <li>usMoney - 格式化数字到美元货币。如：$10.97
    <li>date[(format)] - 将一个日期解析成为一个特定格式模式的日期。如日期字符串不输入，默认为&#8220;月/日/年&#8221;
    <li>stripTags - 剥去变量的所有HTML标签 </li>
</ul>
<br>   其用法都是<br>    var template =  '模板字符串 ：处理函数';<br>   方式赋给new Ext.Template(template)<br>  <br><br><br><br><br><br><br><br><br> 还可以自定义处理函数，在冒号前加入this.函数名，然后需要定义该函数，<br>如下：<br><br>
<pre>var myTpl = new Ext.XTemplate('&lt;div&gt;User: {username} Password: {password:this.EncodeString}&lt;/div&gt;');
myTpl.EncodeString = function(val) {</pre>
<pre>	return MD5(val)</pre>
<pre>};
myTpl.append(document.body, </pre>
<pre>              {username: 'kenlistian', </pre>
<pre>               password: '123'});		</pre>
</code></code></pre>
<pre><code><code><br>更为复杂的模板构造和填入：采用了for =关键字，循环填入。<br><br>
<pre class="source source-javascript"><span class=kw2>var</span> iconTpl = <span class=kw2>new</span> Ext.<span class=me1>XTemplate</span><span class=br0>(<br></span><span class=st0>'&lt;fieldset&gt;&lt;legend&gt;{title}&lt;/legend&gt;<br>&lt;tpl <span style="COLOR: red">for</span>="iconArray"&gt;<br>   &lt;img src="{img}" width="16" height="16" /&gt; {desc}&lt;br/&gt;<br>&lt;/tpl&gt;<br>&lt;/fieldset&gt;'</span><span class=br0>)</span>;	</pre>
<pre class="source source-javascript"><br><span class=kw2>var</span> tplObj = <span class=br0>{</span><br>	title: <span class=st0>'Order Legend'</span>,<br>	iconArray: <span class=br0>[</span><br>		<span class=br0>{</span>img: <span class=st0>'images/icons/cog_orange.png'</span>, desc: <span class=st0>'Active Order'</span><span class=br0>}</span>,<br>		<span class=br0>{</span>img: <span class=st0>'images/icons/stop.png'</span>, desc: <span class=st0>'Cancelled Order'</span><span class=br0>}</span>,<br>		<span class=br0>{</span>img: <span class=st0>'images/icons/tick.png'</span>, desc: <span class=st0>'Completed Order'</span><span class=br0>}</span><br>	<span class=br0>]</span><br><span class=br0>}</span>;                  <br>iconTpl.<span class=me1>compile</span><span class=br0>(</span><span class=br0>)</span>;<br>iconTpl.<span class=me1>append</span><span class=br0>(</span>document.<span class=me1>body</span>, tplObj<span class=br0>)</span>;</pre>
<pre class="source source-javascript">&nbsp;</pre>
<pre class="source source-javascript">&nbsp;</pre>
<pre class="source source-javascript">在构造模板中还有if 关键字，如下模板格式，来自api document，</pre>
<pre class="source source-javascript">var tpl = new Ext.XTemplate(<br>&nbsp;&nbsp;&nbsp; '&lt;p&gt;Name: {name}&lt;/p&gt;',<br>&nbsp;&nbsp;&nbsp; '&lt;p&gt;Kids: ',<br>&nbsp;&nbsp;&nbsp; '&lt;tpl for="kids"&gt;',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;tpl if="age &gt; 1"&gt;',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;p&gt;{name}&lt;/p&gt;',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;p&gt;Dad: {parent.name}&lt;/p&gt;',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&lt;/tpl&gt;',<br>&nbsp;&nbsp;&nbsp; '&lt;/tpl&gt;&lt;/p&gt;'<br>);<br>tpl.overwrite(panel.body, data);</pre>
<br><br><br><br>自定义函数和if也可以组合成模板，这里不再叙述，见api 文档。<br><br><br></code></code></pre>
</code>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42204.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-10 13:40 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/10/42204.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ext 实现一个小panel例子</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/09/42185.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Wed, 09 Apr 2008 14:59:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/09/42185.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42185.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/09/42185.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42185.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42185.html</trackback:ping><description><![CDATA[<p><br>1.编写一个test.js代码<br>&nbsp; Ext.onReady(function() {</p>
<p>&nbsp;&nbsp;&nbsp; source = '&lt;p&gt;测试Ext 例子：&lt;br&gt;&nbsp;';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var p = new Ext.Panel({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title: 'study Ext',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;collapsible: true,<br>&nbsp;&nbsp;&nbsp; &nbsp;collapsed : true, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderTo: 'panel1',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:400,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html: source<br>&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp; });</p>
<p><br>2.编写html文件，在html文件加上ext的库头文件。<br><br>3.把js文件的容器，比如&lt;div id='panel'&gt;&lt;/div&gt;添加上来，即可由ext的js<br>&nbsp; 来形成脚本运行。<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br></p>
<div id="&#8217;panel&#8216;"></div><img src ="http://www.cnitblog.com/kenlistian/aggbug/42185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-09 22:59 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/09/42185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 调试工具</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42134.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 08 Apr 2008 10:01:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42134.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42134.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42134.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42134.html</trackback:ping><description><![CDATA[<br><span style="FONT-FAMILY: Arial">在firefox下的调试插件<br>1.FireBug<br>2.VenkMan<br>3.Web Developer<br><br>IE下面的调试工具<br>&nbsp; &nbsp;需把IE选项里的禁止调试的勾子去掉,<br>&nbsp; 1.Firebug Lite&nbsp;<br>&nbsp; 2. InterDev，<br>&nbsp; 3.office2003下的Office工具-&gt;HTML源文件编辑-&gt;web脚本创作-&gt;站点调试</span><br>&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.cnitblog.com/kenlistian/aggbug/42134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-08 18:01 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/08/42134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>json格式 笔记</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42124.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 08 Apr 2008 05:29:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42124.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42124.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42124.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42124.html</trackback:ping><description><![CDATA[<p>JSON (Javascrīpt Object Notation)</p> <p>优点:<br>1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小<br>2. 易于解析这种语言, 客户端Javascrīpt可以简单的通过eval()进行JSON数据的读取<br>3. 支持多种语言, 包括Actionscrīpt, C, C#, ColdFusion, <a href="http://www.phpchina.com/"><u><strong>Java</strong></u></a>, Javascrīpt, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析<br>4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的<a href="http://www.phpchina.com/"><u><strong>对象</strong></u></a>、数组等能够直接生JSON格式, 便于客户端的访问提取.<br>&nbsp;&nbsp; 另外PHP的PEAR类已经支持 (<a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=198">http://pear.php.net/pepr/pepr-proposal-show.php?id=198</a>)<br>5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护 <p>缺点:<br>&nbsp; 没有XML格式深入人心和使用广泛, 没有XML那么通用性<br> <p>&nbsp; <p>xml和son的对比： <p>xml： <p>&lt;menu id="file" value="File" &gt;  <p>&lt;popup&gt;  <p>&lt;menuitem value="New" onclick="CreateNewDoc()" /&gt;  <p>&lt;menuitem value="Open" onclick="OpenDoc()" /&gt;  <p>&lt;menuitem value="Close" onclick="CloseDoc()" /&gt;  <p>&lt;/popup&gt;  <p>&lt;/menu&gt;</p> <p>son：</p> <p>{"menu": { <p>"id": "file", <p>"value": "File:", <p>"popup": { <p>"menuitem": [ <p>{"value": "New", "onclick": "CreateNewDoc()"}, <p>{"value": "Open", "onclick": "OpenDoc()"}, <p>{"value": "Close", "onclick": "CloseDoc()"} <p>]} <p>}} <p>以上可见： <p>1。对象object包含在{}中， <p>2。对象的属性member使用string : value 成对出现，属性与属性之间用逗号隔开， <p>3。数组array在[]中，如：[ elements ]  <p>4。元素elements与元素之间用逗号隔开 elements , elements  <p>5。元素值可具有的类型：string, number, object, array, true, false, null  <p>&nbsp; <p>应用范围； <p>&nbsp;&nbsp;&nbsp;&nbsp; JSON主要用在AJAX中，由于在客户端使用JavaScript脚本，故使用JSON，将使得进程的响应变得更快 <p>&nbsp; <p>&nbsp; <p>&nbsp; <p>如何在asp中组织json <p>&nbsp; 很多语言支持json的编码和解码。php5.2以上，ruby等皆有对应的处理，在asp中需要自己去写，幸好网上有很多例子， <p>下面也列出一个asp把array数组组织到json的例子。 <p>&nbsp;</p> <table cellspacing="0" cellpadding="2" width="828" border="2"> <tbody> <tr> <td valign="top" width="824"> <p>&nbsp;<font color="#808080">'root json 数据名 </font> <p><font color="#808080"> Function json_encode(root , arr_data)<br>&nbsp;&nbsp;&nbsp; If root = "" Then root = "root" </font> <p><font color="#808080">&nbsp;&nbsp;&nbsp; str_Head = "{" &amp; Chr(13) &amp; Chr(9) &amp; Chr(9) &amp; root &amp; ":{ " &amp; Chr(13) &amp; Chr(9) &amp; Chr(9) &amp;Chr(9) &amp; Chr(9) &amp; "arrs:[ " &amp; Chr(13) </font> <p><font color="#808080">&nbsp;&nbsp;&nbsp; str_Body = chr(9) &amp; chr(9) &amp; chr(9) &amp; chr(9) &amp; chr(9) &amp; "{"&nbsp; <br>&nbsp;&nbsp;&nbsp; str_End =&nbsp; "}" &amp; Chr(13) &amp; chr(9) &amp; chr(9) &amp; chr(9) &amp; chr(9) &amp; "]" &amp; chr(13) &amp; chr(9) &amp; chr(9) &amp; "}" &amp;chr(13) &amp; "}" <br>&nbsp;&nbsp;&nbsp; for i = 0 to ubound(arr_data) - 1&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_Body = str_Body &amp; chr(34) &amp;&nbsp; i&nbsp; &amp; chr(34) &amp;":"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&nbsp;&nbsp; name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_Body = str_Body &amp; chr(34) &amp; arr_data(i) &amp; chr(34) &amp; ","&nbsp;&nbsp;&nbsp; 'value<br>&nbsp;&nbsp;&nbsp; Next </font> <p><font color="#808080">&nbsp;&nbsp;&nbsp; '去除记录最后一个字段后的"," <br>&nbsp;&nbsp;&nbsp; str_Body = left(str_Body,instrrev(str_Body,",")-1)<br>&nbsp;&nbsp;&nbsp; json_encode = str_Head &amp; str_Body + str_End </font> <p><font color="#808080">End Function</font> </p></td></tr></tbody></table><img src ="http://www.cnitblog.com/kenlistian/aggbug/42124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-08 13:29 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/08/42124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ajax 和ria 比较札记</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42106.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Mon, 07 Apr 2008 16:53:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42106.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42106.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/08/42106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42106.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42106.html</trackback:ping><description><![CDATA[<p><strong>AJAX与RIA共性：</strong><br>都是WEB2.0的应用，都具有人性化的设计理念 <p><strong>AJAX与RIA表现形式：<br></strong>AJAX比较简单素雅，人性化，访问速度快。缺点：代码混乱，编写复杂，不符合标准，对搜索引擎不友好。程序效率低。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （不见得，目前ajax框架日渐成熟，开发工具以及模式也近有小成）<br>RIA可扩展性更大，人性化更多，视觉和互动上更好，但缺点是访问速度慢，下载文件大，还有RIA应用程序特别耗CPU，程序效率比较低，很多问题还需要解决。 （目前到是感觉慢，随着硬件的发展，估计发展趋势上升） <p>&nbsp; <p>细节区别：<br>&nbsp; RIA&nbsp; 侧重用户交互层的设计及其概念，<br>&nbsp; AJAX侧重是服务器数据处理及传输层面的方面，也有在UI上做模式规划。<br>&nbsp; 由于AJax在UI上没有RIA在交互层细节化的扩展和深入，在表现层方面AJAX后劲不足于RIA。</p> <p>&nbsp; HTML简单，但是即使简单的交互活动也仍然需要用很多的脚本来完成。这就是AJAX在日趋成熟框架下</p> <p>&nbsp;&nbsp; 必然跟随一个大的脚本在后面做引擎驱动。</p> <p>&nbsp; 而RIA先天利用相对健壮的客户端描述引擎，这个引擎能够提供内容密集、响应速度快和图形丰富的用户界面外还有更多的包括图形方面的扩展，而这相对Ajax方面固然能实现，则需要使出吃奶力气才能完成。</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>&nbsp; <p>Ajax定义： <p>daptive Path公司的Jesse James Garrett这样定义Ajax： <p>Ajax不是一种技术。实际上，它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含： <p>基于XHTML和CSS标准的表示； <br>使用Document Object Model进行动态显示和交互； <br>使用XMLHttpRequest与服务器进行异步通信； <br>使用JavaScript绑定一切。  <img src ="http://www.cnitblog.com/kenlistian/aggbug/42106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-08 00:53 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/08/42106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发ajax的轻便框架及其工具</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/07/42090.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Mon, 07 Apr 2008 11:09:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/07/42090.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/42090.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/07/42090.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/42090.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/42090.html</trackback:ping><description><![CDATA[<p>1.调试Javascript工具</p> <p>&nbsp;&nbsp;&nbsp; Firebug </p> <p>&nbsp;&nbsp; 使用方法：<a title="http://www.ooso.net/index.php/archives/294" href="http://www.ooso.net/index.php/archives/294">http://www.ooso.net/index.php/archives/294</a></p> <p>2.Aptana编辑jiavascript</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载及其使用 <a title="http://blog.csdn.net/samehai/archive/2007/06/30/1672516.aspx" href="http://blog.csdn.net/samehai/archive/2007/06/30/1672516.aspx">http://blog.csdn.net/samehai/archive/2007/06/30/1672516.aspx</a></p> <p>&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; <a href="http://www.centuryidea.cn/?p=152&amp;akst_action=share-this">http://www.centuryidea.cn/?p=152&amp;akst_action=share-this</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 启动超慢，而且还要去破解，感觉还是太麻烦，</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过，既然用了，就用用吧，</p> <p>3.Ajax框架</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext2.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a title="http://extjs.com/download" href="http://extjs.com/download">http://extjs.com/download</a></p> <p>&nbsp;&nbsp;&nbsp;&nbsp; </p> <p>&nbsp;</p> <p>备注：</p> <p>&nbsp;&nbsp; 现在下载的版本估计升级了，如果找那个jar文件和以前所述不一致，不要紧，就是</p> <p>找到那个core文件，解压后查找clientkey可以找到，然后在原jar处覆盖即可。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; Aptana 注册很麻烦。按照原博客方法做了。还要跑到下载处注册，获取key后，</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 才能更新其正式版。完了就是正式版。</p> <p><a href="http://www.cnitblog.com/images/cnitblog_com/kenlistian/WindowsLiveWriter/ajax_10E00/image_2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="216" alt="image" src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/WindowsLiveWriter/ajax_10E00/image_thumb.png" width="244" border="0"></a></p><img src ="http://www.cnitblog.com/kenlistian/aggbug/42090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-07 19:09 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/07/42090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax笔记一二</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/03/41906.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 03 Apr 2008 08:45:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/03/41906.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/41906.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/03/41906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/41906.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/41906.html</trackback:ping><description><![CDATA[<p>一Ajax开发，目前有4种模式，</p> <p>1.XMLHTTP+WebForm<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最基本的开发模式.开发者直接用javaaScript操作XMLHTTP对象,向服务器端的某个ASP.NET页面发出异步请求.服务器端也面接收请求,进行处理,再把处理结果返回给XMLHTTP对象,最后用JavaScript语言代码把返回的结果显示出来。 <p><font color="#ff0000"> （zc add）&nbsp;&nbsp;&nbsp; 不见得是用javascript，用vbscript操作xmlhttp也是一样，对服务端的后台页面做业务要求，asp，php都可以做，不见得是asp.net.处理页面，用javascript也好，vbscript也好，php，ruby也好，都是组织ui显示。</font> <p>2.XMLHTTP+HttpHandler<br>这是对上一种方式的改进.客户端没有变化,服务器端改用HttpHandler接收和处理异步请求.这样可以降低服务器资源的消耗,减轻服务器的压力,加快服务器的响应时间。 <p><font color="#ff0000">（zc add）这个httphandler没用过。</font> <p>3.Call Back<br>&nbsp;&nbsp; 这是ASP.NET 2.0新增加的开发方式.它要求页面实现ICallbackEventHandler接口,页面中的脚本就可以采用Call Back的机制调用服务器端,这样可以避免开发者直接操纵XMLHTTP对象。在一定程度上简化了Ajax开发。 <p><font color="#ff0000">&nbsp; （zc add ）没用过，不过和微软的atlas一样，都是必须躺在微软的床上作为的</font> <p>4.采用Ajax框架 <p>&nbsp;&nbsp;&nbsp; 基于Ajax的应用程序架构。</p> <p><font color="#ff0000">&nbsp;&nbsp; (zc add)&nbsp; 用! 选哪一款呢</font><br></p> <p>二Ajax从框架上的划分</p> <p>浏览器端框架被划分成两大类：<font color="#ff0000">（说白了，就是有的侧重UI，有的侧重内部数据交互方式）</font></p> <p>·应用程序框架： 提供浏览器的功能，但是常以包括窗口小部件抽象和另外的部件而出名，其功能主要围绕桌面GUI框架。  <p>·基本结构框架： 提供基本的管道和可移植的浏览器抽象，让开发者去创建内容。典型的功能：  <p>&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; * 针对XMLHttpRequest的包装器以封装浏览器-服务器的交互。(所有的框架都提供这一功能)。  <p>&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; * XML操作和查询。  <p>&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; * 根据来自XMLHttpRequest的应答执行DOM操作。  <p>&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; * 在一些情况中，与另外的浏览器端技术如Flash(和潜在的Java applets)集成在一起。  <p>&nbsp; <p>而服务器端框架通常以下面两种方式工作(尽管它们在这里根据语言的不同进行了分类)：  <p>·HTML/JS生成：&nbsp; 服务器提供完整的HTML/Javascript代码生成和浏览器-服务器协调，结果是只有浏览器端编码可以被定制。  <p>·远程调用：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Javascript调用直接被路由到服务器端功能(例如Java方法)并返回到Javascript回叫处理器；<br>&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; 或者Javascript调用服务器以提取信息，例如会话细节，数据库查询等。  <p>·纯Javascript：&nbsp;&nbsp;&nbsp; 应用程序框架</p> <p>&nbsp;</p> <p>三。目前Ajax框架<font color="#ff0000">：（太多，商业要钱的是不错，但是没银子。）</font></p> <p>商业级</p> <p>1.Backbase</p> <p>2.Bindows</p> <p>3.JackBe NQ Suite</p> <p>4.Tibco General Interface</p> <p>商业级别框架，描述有：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp; 四种工具包的核心都是很相似的，它们都围绕标准的用户界面实用程序构建而成。根据它们的定义，所有这些工具包都对DOM（文档对象模型）树进行操作，因此它们都要接受HTML的指导，而且要在浏览器中实施。所有这些工具包都采用严格的商业风格，几乎没有体现出早期 JavaScript开发中所具备的特质。（？）它们之间的区别在于与服务器的集成。一些工具包要求服务器以Web服务的方式对数据进行打包。而有的工具包则可以提供广泛的服务器框架，而这些框架可将客户端应用与公司的数据库和机器集成在一起。所有这些工具包都集成了主要的服务器技术，如特定层次的JSP和PHP，但有些产品还提供更为广泛的支持。<font color="#ff0000">（与服务的内部数据处理交互矣）</font></p> <p><font color="#ff0000">&nbsp;&nbsp;&nbsp; 至于那一款更好，只有再仔细甄别了：<a title="http://tech.51cto.com/art/200612/36247.htm" href="http://tech.51cto.com/art/200612/36247.htm">http://tech.51cto.com/art/200612/36247.htm</a></font></p> <p>&nbsp;</p> <p>开源级：</p> <p>&nbsp; （ <a title="http://blog.csdn.net/WilliamRaym/archive/2005/09/30/492634.aspx" href="http://blog.csdn.net/WilliamRaym/archive/2005/09/30/492634.aspx">http://blog.csdn.net/WilliamRaym/archive/2005/09/30/492634.aspx</a>）</p> <p>&nbsp;&nbsp;&nbsp; （<a title="http://www.duduwolf.com/post/AJAX_Frameworks.asp" href="http://www.duduwolf.com/post/AJAX_Frameworks.asp">http://www.duduwolf.com/post/AJAX_Frameworks.asp</a>）</p> <p>&nbsp; 太多了，而且感觉杂乱无须，在浏览器端采用ajax，而在服务端均有不同语言组织数据与其交互的封装和处理，</p> <p> 不过，排名十大开源框架有（<a title="http://subject.csdn.net/ajaxframework.htm" href="http://subject.csdn.net/ajaxframework.htm">http://subject.csdn.net/ajaxframework.htm</a>）</p> <p>1.prototype</p> <p>2.Dojo</p> <p>3.Mootools</p> <p>4.JQuery</p> <p>5.Dwr</p> <p>6.Buffalo</p> <p>7.Yui</p> <p>8.Ext</p> <p>9.Qooxdoo</p> <p>10.Spry</p> <p>至于使用来说，也只有使用的人才能感觉好坏和喜好，列出一个比较</p> <p><a title="http://www.blogjava.net/chenxiaojun/archive/2008/01/08/173561.html" href="http://www.blogjava.net/chenxiaojun/archive/2008/01/08/173561.html">http://www.blogjava.net/chenxiaojun/archive/2008/01/08/173561.html</a></p><img src ="http://www.cnitblog.com/kenlistian/aggbug/41906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-03 16:45 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/03/41906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软Ajax</title><link>http://www.cnitblog.com/kenlistian/archive/2008/04/03/41904.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 03 Apr 2008 08:00:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/04/03/41904.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/41904.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/04/03/41904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/41904.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/41904.html</trackback:ping><description><![CDATA[<p>微软致力于简化Ajax风格Web应用的开发，并提供丰富的、可交互的和个性化的用户体验。开发者可以对客户端脚本不甚了解；但他们可以很容易地开发和调试这种应用程序。<br>　　出于这一目的，微软启动了一个新的项目，研发代号“Atlas”。Atlas为开发这带来了如下特性：<br>　　·Atlas客户端脚本框架<br>　　·Atlas的ASP.NET服务器控件<br>　　·ASP.NET Web Services集成<br>　　·Atlas的ASP.NET构建块<br>　　·客户端构建块服务<br>　　Atlas是编写丰富的、可交互的和个性化的Web浏览器应用程序的最好方式。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Atlas是微软提供的一个工具包，用来完成Ajax的功能。从微软的Scott Guthrie的blog上看来，这个东西应该是ASP.NET 2.0里面的。Scott肯定地表示，“Atlas客户端脚本框架（Client Script Framework）可以运行在所有的现代浏览器上并且何以与任何Web服务器交互”，这说明他们正在以跨浏览器的态度来开发Ajax风格的远程脚本，这无疑是一个巨大的转变；过去的微软，把任何东西都搞成了特定于IE的，而一旦其开发工具能够真的提供彻底的跨浏览器支持，将能够笼络更多的ASP.ENT 开发者，他们无需了解任何细节就可以创建跨浏览器代码。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Atlas客户端脚本框架是可扩展的，100%面向对象的JavaScript客户端脚本框架，允许开发这很容易地构建拥有丰富的UI工能并且可以连接Web Services的Ajax风格浏览器应用程序。使用Atlas，开发者可以使用DHTML、JavaScript和XMLHTTP来编写Web应用程序，而无须掌握这些技术的细节。<br>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Atlas客户端脚本框架可以在所有的现代浏览器上运行，而不需要Web服务器。它还完全不需要安装，只要在页面中引用正确的脚本文件即可。<br>　　Atlas客户端脚本框架包含下列组件：<br>　　·一个可扩展的和新框架，其中为JavaScript添加了很多新特性，如生存期管理、集成、多播事件处理器和接口<br>　　·一个基础类库，提供了通用特性，如丰富的字符串操作功能、计时器和运行任务等<br>　　·一个UI框架，可以跨浏览器实现动态行为<br>　　·一个网络栈，用于简化对服务器的连接和对Web Services的访问<br>　</p> <p>&nbsp;&nbsp; 微软为ASP.NET应用程序专门设计了一组Ajax风格的服务器控件，并且加强了现有的ASP.NET页面框架和控件，以便支持Atlas客户端脚本框架。<br>　　ASP.NET 2.0中有一项称作异步客户端回调的新特性，使得构建无中断的页面变得很容易。异步客户端回调包装了XMLHTTP，能够在很多浏览器上工作。 ASP.NET本身包括了很多使用回调的控件，包括具有客户端分页和排序功能的GridView和DetalsView控件，以及TreeView空间的虚拟列表支持。<br>　　Atlas客户端脚本框架将完全支持ASP.NET 2.0回调，但微软希望进一步增强浏览器和服务器之间的集成性。例如，你可以将Atlas客户端控件的数据绑定指定为服务器上的ASP.NET数据源控件，并且可以从客户端异步地控制Web页面的个性化特征。<br>　　和任何客户端应用程序一样，一个Ajax风格的Web应用程序通常也需要访问Web服务器的一些功能。Atlas应用程序连接服务器的模型和其他平台类似，都是使用Web Services来实现。</p> <p><br>　　通过ASP.NET Web Services集成，Atlas应用程序将可以在任何支持XMLHTTP的浏览器上通过Atlas客户端将本框架来直接访问任何宿主于ASP.NET的asmx或Indigo服务。该框架将会自动处理代理和脚本到对象、对象到脚本的序列化问题。通过使用Web Services集成，开发者可以使用单一的编程模型来编写Web Services，并且在任何应用程序中使用它们，不论是基于浏览器的站点上还是智能客户端应用程序中。<br>　　在ASP.NET 2.0中，微软构建了一组丰富的构建块服务（Building Block Services），这使得构建强大、个性化的Web应用程序变得不可思议的简单。这些构建块极大地降低了在开发通用的Web应用程序过程中需要编写的代码数量，比如管理用户、通过角色验证用户和存储用户的个性化设置信息等。<br>　　使用Atlas，我们可以在任何浏览器上的任何客户端应用程序中向访问Web Services那样访问这些功能。例如，如果你正在开发一个站点，来显示用户的TO-DO项目，你可以使用ASP.NET的Profile服务来将他们存放在服务器上的用户自定义配置文件中。这样即使用户从一台机器上转移到另一台机器上，也同样可以访问这些项目。<br>　　微软将提供的服务包括（全部是基于ASP.NET 2.0的）：<br>　　- Profile：在服务器上存放每个用户特有的数据<br>　　- UI个性化：在服务器上存放个性化的UI设置信息<br>　　- 验证：验证用户<br>　　- 角色：基于用户的角色验证用户任务和提供不同的UI<br>　　由于这些构建块是服务器端的，开发者需要对他们应用和其他站点一样的安全模型。这些服务不需要客户端下在任何东西——只要在浏览器中引用脚本代理即可。</p> <p><br>　　所有的ASP.NET 2.0构建块服务都是可插拔的，这使用一种通用的提供者模型可扩展模式在后台实现。微软提供的内建提供程序允许开发这使用SQL Server数据库或Active Directory作为存储容器，开发者也可以很容易地插接自己的提供程序。例如，你可能希望使用集群而不是数据库服务器来存放用户的配置文件，这时你只需将你的提供程序插接近来即可。除了DHTML、JScript和XMLHTTP，微软还提供了一组附加的服务来加强客户端的功能并提供增强的体验。<br>　　对于这样的服务，本地浏览器缓存就是一个很好的例子。当启用了本地浏览器缓存时，Web站点就可以将内容存储到缓存中，并在需要的时候很快地取出。但浏览器并未提供向缓存中存放数据的API，而且象Google Map或OWA这样的应用程序不得不通过很多工作产生一个唯一的URL才能使浏览器缓存它。在Atlas中，微软提供了可编程的本地存储/缓存，因此应用程序可以很方便、有效并且安全在本地缓存数据。<br></p> <p>我来说：微软的东西，只能跑在IIS之下，也必须背着.NET到处跑才能干活的事情。</p><img src ="http://www.cnitblog.com/kenlistian/aggbug/41904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-04-03 16:00 <a href="http://www.cnitblog.com/kenlistian/archive/2008/04/03/41904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>