Neo 的个人资料Neo Think Space照片日志列表更多 工具 帮助

日志


2007/8/15

Javascript的三个编码方法

escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。不会被此方法编码的字符: @ * / +

encodeURI() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent() 方法:
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( ) '
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。

2006/8/4

剖析AJAX成为时尚的十大主要理由

现在说AJAX是目下最时髦的技术一点不假,当然也有人认为其中有很多炒作的成分;估计两边谁也不能说服谁。因此让我们一起分析为什么AJAX在这个时候出现,以及它为什么会继续成长并且仍将徘徊一段时间。简言之,我把它归结为下面列举的十个最主要的理由。

   按数字顺序是:

   1. XAML,XUL,XForms...还未结束

   2. 服务器技术不可知论者

  3. Web 2.0

   4. 业界领导们强烈支持采纳

   5. 与Flex和Flash良好共处

   6. 很低的成本增加

   7. 常规Web应用软件的优点

   8. 跨浏览器和跨平台

   9. 可用性和用户体验是第一位的

   10. 上面的理由全部基于开放标准!

   下面,详细讨论各部分相应细节:

   1.开放标准

   让我们按逆序开始分析。AJAX是基于有众多浏览器和平台支持的开放标准的;这意味着,你不必惧怕供应商的锁定问题。事实上,大多数组成AJAX的技术已经被广泛地使用多年了。这些并不是一些只能在大多数时间才正常工作的热门的、新的、未经测试的技术。对于大多数用户和企业来说,现在的浏览器是一个值得信任的应用程序平台;这已经不再是五年前的情形了。对于AJAX来说,其转折点之一是Mozilla 1.0的发行-其中,FireFox基于并且支持XML HTTP请求对象。这就允许数据的异步传送-而这对IE来说,已经有数年的可能性了。这一支持以及FireFox的迅速采纳确实帮助人们认识到,实现跨浏览器的丰富的互联网应用软件是完全可能的。

   1)JavaScript或ECMA Script(标准的ECM A-262):关于JavaScript,值得注意的一件事情是,它经历了很长一段时间才成为一种被人接受的技术。有相当长一段时间,许多公司都启用了一种"非JavaScript"策略!幸运的是,这一切正在快速地改变着。请见http://www.ecma-international.org/publications/standards/Ecma-262.htm

   2)XML是广泛使用的标准,详见W3C的http://www.w3.org/XML/

   3)HTML:http://www.w3.org/MarkUp/

   4)CSS:http://www.w3.org/Style/CSS/

   5)XML HTTP请求对象被Internet Explorer、基于Mozilla的Safari和Opera浏览器所支持。

   2.可用性

   开发者和设计者开始意识到,用户体验不仅大大影响着市场的成功,而且还影响着所有者的成本开销。基于AJAX应用软件,例如Google Maps,比更传统型如MapQuest的软件的成功说明了,能够提供更好的用户体验的产品更容易成功。现在,在使得Web应用软件更为可用方面,AJAX占据着领导地位。它允许页面从服务器请求少量的信息而代之整个页面。页面的这种不断更新消除了页面刷新问题和自始至今一直折磨着Web应用软件的缓慢响应问题。

   人们意识到,他们需要体面的用户接口并且愿意在它上面投资。这里的底线在于,如果用户能够让事情做得快一些,那么其中就存在价值问题,而不论该应用程序是一个内网应用程序还是一个公共的Web服务。

   3.跨浏览器和跨平台兼容性

   IE和基于Mozilla的FireFox占据了当今浏览器市场的大部分份额,而且是毫无争议的最容易的基于之构建AJAX Web应用程序的浏览器;但是现在,有可能在最现代Web浏览器上构建基于AJAX的丰富的互联网应用程序。这是AJAX变得如此流行的一个重要原因。尽管许多开发者知道这在几年前在Internet Explorer上也是可能的,但是因为供应商锁定(或者说是技术垄断)的原因,这一应用并没有被挖掘出来。让我们谢谢Mozilla和FireFox吧!

   4.常规Web应用程序的优点

   AJAX是今天Web应用软件的脸面-而Web应用软件比基于桌面的软件也有明显的优点。这些优点包括较低的发布成本、更容易的支持、更短的开发周期及不需要安装,等等;上面这些仅是自从90年代后期以来使得商界和消费者采纳基于Web应用软件的部分优点(原因)。不过,AJAX将只能帮助web应用软件在客户端方面更好和更为成功些。

   5.增长的技巧、工具和技术升级

   因为AJAX基于事实上的已经出现多年的标准,所以许多开发者至少都已开始探讨这种用来构建AJAX应用软件的技术。这意味着,对于开发团队来说,不需要特别陡的学习曲线就可以实现从HTML和基于表单的应用程序到丰富的AJAX风格的应用程序的迁移。这还意味着,Web应用软件开发团队可以逐渐地把他们的用户接口升级到AJAX;它不要求大规模的升级和重写他们的Web应用软件。如果是从90年代后期以来在发布基于浏览器的应用软件方面做了相当大的投资的话,那么能够平衡现有系统并且能改进用户体验将是一件非常吸引人的事情。

   6.使用Flex和Flash

   大部分开发社区现在热论着Flash和AJAX。在不同情况下,这两种技术都有非常明显的优缺点,但是在它们之间也存在大量的协同工作的机会。许多开发者和供应商已经意识到这一点,并且非常和谐的利用AJAX和Flash技术开发了大量的伟大的软件。当然,Macromedia公司也非常渴望看到这些技术能够协同工作。

   7.采纳

   为业界领导普遍采纳AJAX这一事实同时也证明了市场的接受和这一技术群组的有效性。每个人,包括Google、Yahoo、Amazon和Microsoft等等,都涌入了这股大军中。应该说,是Google Maps真正吸引了Web开发者们的注意。当人们开始分析Google怎么能够在浏览器中没有任何插件的情况下实现这样一种令人难以置信的用户体验的时候,他们发现AJAX这种潜在的技术。

   当然,只有Google利用AJAX做了点什么是不可能使得AJAX应用到主流企业中的。但是,如果你看一下例如eBusiness Applications(www.ebusinessapps.com)或Tibco(http://www.tibco.com)等AJAX开发公司的顾客列表,那么你将看到全球500强企业,包括主要的金融机关、管理机构、航空部门和其它主要行业,都在采纳AJAX,并且在"AJAX"术语出现之前就已经这样做了。

   8.Web 2.0

   爱它?恨它?Web 2.0运动正处于全面的摇摆之中,而且正改变着几乎所有程序员、VC、商人和终端用户等的思想。这就明确说明,AJAX技术将会被暂时采纳;当这一炒作最终平静下来的时候,人们将会有趣地看到所发生的一切。AJAX接口是许多应用软件,如从BackPack到Google Maps的Web 2.0等等,的一个关键组件。很可能,这一炒作会帮助加速对于AJAX的采纳并且其可用性优点将使之应用到很多领域。Web 2.0的关键原则之一是,使Web成为一个应用程序开发的平台,而不仅仅是Web页面的问题。高实用性和高交互性的用户接口是任何应用程序平台的关键的部分。

   9.AJAX是服务器不可知论者

   与AJAX是浏览器独立的一样,它也完美兼容于任何标准Web服务器和服务器端语言中。PHP,ASP,ASP.Net,Perl,JSP,Cold Fusion,等等-你可以自由选择并着手构建。这大大帮助推动了AJAX技术的应用,因为所有的Web开发者都能使用并且在一个通用描述层上进行表达。

   10.下一代Web RIA技术还没有出现

   今天用XUL构建应用程序是很伟大的事情;但是,因为它不能被90%的浏览器所支持,所以在大多数情形下它还不能被认为是一种非常实际的解决方案。然而,AJAX程序员应该密切关注例如XAML和XUL等技术的发展。毫无疑问,这些技术将更易于开发丰富的互联网应用软件,但是它们彼此相冲突并且还不存在相同的市场渗透或者动力。

   AJAX对于改变当今已经存在的Web应用软件的可用性方面是伟大的。然而,AJAX并不完美,它不是"火箭科学"并且许多开发者和技术公司在一直尝试着研发更好的技术以用于RIA。事实是,AJAX已经出现并且被投入使用,它是跨浏览器和跨平台的,并且用户和开发者都喜欢它所能完成的功能。高度结构化的AJAX应用软件,例如Google Maps,已经明确地出现在它们的领域并成为其中的领导者(谁还会再使用MapQuest?)。同样,领先世界的全球500强企业正在使用AJAX并且甚至向社区回贡一些工具。业界已经普遍地同意内在的AJAX技术并且开始使用它们。不断更新的丰富的互联网应用软件和一种在浏览器技术方面的关键进步已经使得AJAX不仅是一个在开发者的工具包中的新工具,而且成为一种现象-正在改变着Web应用软件的书写方式。没人能确定地说用什么或者什么时候AJAX会成为更为人们喜欢的丰富的互联网应用软件平台;但是,在随后的几年中会一直存在许多因素支持AJAX。

Ajax 的技术优势

Ajax所带来的优势:

1.由于可以在页面内与服务器通信,不必整体刷新页面,减少了数据传输量,提高了Web应用的响应速度,给用户带来全新的感受。

2.由于可以在页面内与服务器通信,使得构建智能化的客户端控件成为可能。例如:数据表格,树型控件等各种复杂的控件。

3.智能化的客户端控件可以通过XMLHttpRequest与服务器通信,来获取数据,并可缓冲和处理数据。使得许多工作可以在客户端完成,例如:数据效验。

4. 智能化的客户端控件具有自己的属性、方法和事件,使得Web编程变得象桌面程序的界面编程一样功能丰富。

5.Ajax使得Web应用既保留了B/S结构的优点,又具有C/S结构应用的强大功能和用户感受。

综上所述,可以认为Ajax就是Web标准和Web应用的可用性理论的集大成者。它极大地改善了Web应用的可用性和用户的交互体验,最终得到了用户和市场的广泛认可。所以可以说,Ajax就是用户和市场的选择。

Ajax综合概述

Ajax全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax技术是目前在浏览器中通过JavaScript脚本可以使用的所有技术的集合。Ajax以一种崭新的方式来使用所有的这些技术,使得古老的B/S方式的Web开发焕发了新的活力。

Ajax技术之中,最核心的技术就是XMLHttpRequest,它最初的名称叫做XMLHTTP,是微软公司为了满足开发者的需要,1999年在IE5.0浏览器中率先推出的。后来这个技术被上述的规范命名为XMLHttpRequest。它正是Ajax技术之所以与众不同的地方。简而言之,XMLHttpRequest为运行于浏览器中的JavaScript脚本提供了一种在页面之内与服务器通信的手段。页面内的JavaScript可以在不刷新页面的情况下从服务器获取数据,或者向服务器提交数据。XMLHttpRequest的出现为Web开发提供了一种全新的可能性,甚至整个改变了人们对于Web应用由什么来组成的看法。它可以使我们以一种全新的方式来做Web开发,为用户提供更好的交互体验。

与传统的Web开发不同,Ajax并不是以一种基于静态页面的方式来看待Web应用的。从Ajax的角度看来,Web应用应由少量的页面组成,其中每个页面其实是一个更小型的Ajax应用。每个页面上面都包括有一些使用JavaScript开发的Ajax组件。这些组件使用XMLHttpRequest对象以异步的方式与服务器通信,从服务器获取需要的数据后使用DOM API来更新页面中的一部分内容。因此Ajax应用与传统的Web应用的区别主要在三个地方:

1. 不刷新整个页面,在页面内与服务器通信。

2. 使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的的响应能力。

3. 应用仅由少量页面组成。大部分交互在页面之内完成,不需要切换整个页面。

由此可见,Ajax使得Web应用更加动态,带来了更高的智能,并且提供了表现能力丰富的Ajax UI组件。这样一类新型的Web应用叫做RIA(Rich Internet Application)应用。