<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我想网 &#187; Ajax</title>
	<atom:link href="http://www.iwanna.cn/topics/ui/javascript/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iwanna.cn</link>
	<description></description>
	<lastBuildDate>Sat, 31 Jul 2010 15:12:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>使用框架建立富联网应用</title>
		<link>http://www.iwanna.cn/archives/2010/07/27/4752/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/27/4752/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 13:41:38 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[YUI]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4752</guid>
		<description><![CDATA[JavaScript库，ICEfaces，Adobe  Flash，微软Silverlight，现在还有HTML5，全球性的网络支配地位的竞争已经进入了崭新的时代——一个富网络应用（简称RIA，中文也 有叫富互联网应用）的时代。本文目的是界定什么是RIA，解释为何网络已经开始向RIA靠拢，探索今天已经存在的不同RIA框架，对每个框架作出一些优点和缺点的概述，并讨论这些新技术在未来将是怎么样的生存态。


RIA是何物?
所谓RIA，或者说富网络网应用，就是指可以像桌面程序一样操作的网络应用。 在RIA冒出来之前，大多数的网络应用都是静态的页面构建的。

Sumo Paint 是一个基于Flash的RIA,  具有像Photoshop一样的图形编辑功能。
跟桌面应用程序不同，任何一个网页的互动往往需要重新加载一个全新的页面。而桌面应用程序，在另一方面，有很多更好的用户交互性，因为所有处理都是在用户的机器本身，所以能给以更加无缝的用户体验。
因此，软件开发商开始问自己，“我们产品应该是一个桌面应用程序还是一个Web应用程序呢？”
这一直是一个公平的问题，因为这两种类型的应用程序都具有各自优点和缺点。
桌面应用程序具有流畅的用户交互性，但软件是售出去的，会遇到发布和更新的问题。
Web应用程序，另一方面，很容易从网上获得，摆脱相关的软件发布和更新的问题，但在用户交互性体验非常差。
因此，怎么样才能两全其美呢？
RIA就是两全其美。RIA通过网络发布，有非常丰富的用户交互。得益于Ajax的出现，一个无需刷新就可以发送服务器请求的网络应用的方法，新技术出现，加入了RIA的运动。
基于这些技术出现了一些框架，帮助开发人员构建和部署富网络应用程序，如JavaScript库，ICEfaces，Adobe Flash 4（Flex 3前身），微软Silverlight，以及HTML5的。
让我们来一个个探讨RIA的框架。
网络应用的JavaScript库
JavaScript库，例如 jQuery和MooTools 是首批技术之一，可以真正的帮助部署流畅和互动的富网络应用。它们提供通过杠杆客户端脚本来处理前端接口功能的RIA框架。它们是一些基本的 Javascript文件，由一些有用的，经过跨浏览器测试功能的集成。可以使用Ajax，以及处理普通的基于用户驱动事件的交互，如显示和隐藏内容。
目前最流行的有jQuery（尤其是使用jQuery UI），MooTools，YIU（雅虎用户界面库），以及EXTJS。这些库包括RIA组件，如网格，图表和复杂的表单元素，以及处理Ajax的工具。最引人入胜的是，大部分网络开发的JavaScript库都是开源的。
如果你不想购买一个集成开发环境（IDE），但仍希望在自己的网站绚丽而专业的RIA功能，JavaScript库是一个很不错的选择。
使用JavaScript库的网站有Google，Digg，雅虎，亚马逊，微软，Twitter，以及Best Buy。
ICEfaces
ICEfaces是标准的JavaServer Faces（JSF）的框架的扩展，旨在去除方程中的JavaScript从而简化程序员的工作流程。换句话说，ICEfaces通过Java应用接口为你处理了所有的JavaScript/Ajax。通过删除这些自定义JavaScript函数的复杂引入，大大简化了创建富网络应用的任务。
如果你的团队主要成员是Java开发人员，或者如果你的网络应用程序不需要其它ICEfaces没有的复杂组件，又或者如果你的网络应用程序是事件驱动的，那么使用ICEfaces是很好的选择。如果你的网路应用是事件驱动的，请确定你已经了解ICEfaces不提供真正的“服务器推”技术的，HTML5，Flash Builder 4和Silverlight都支持的。不过，相应地ICEfaces使用长轮询的方法来模拟服务器推技术。
使用ICEfaces的网站有波音，美国航空航天局，联合太平洋公司，T-Mobile，以及美国银行。
Adobe Flash Builder 4
Flash已经出现了很长一段时间，但是用使用Flash来构建整个网络应用十分麻烦，直到Flex的引进，这是Flash的一个扩展，提供RIA网络组 件。
Adobe Flash Builder  4最令人兴奋的是它的跨平台和跨浏览器特性，允许程序在所有的操作系统和所有的浏览器上以同样的方式运行。相比于JavaScript，浏览器有不同的 JavaScript引擎管理和处理的代码，而Adobe的Flash只有一个引擎，用户通过Adobe  Flash浏览器插件来安装（通常的情况是他们有了）。
Flash Builder 4  应用之所以能如此，因为它们已经嵌入到HTML页面，这意味着浏览器本身并没有对应用程序的性能有什么影响。这意味着你如果你乐意，  你还可以在IE6上运行最复杂的网络应用程序。（这当然简单，因为Flash插件/引擎经常会更新，因此只是稍微依赖于用户插件的版本）。
这些应用通常是伴随着服务器端处理，比如一个Java后端处理，而且需要Flash Builder 4IDE做开发。
如果你的团队主要是Java开发（因为搭配Java运作良好），或者你的应用程序使用事件驱动的构架，可以选择Adobe Flash Builder  4。
使用Flash作为网络应用程序的网站有Mint.com，Flickr和Hyundai。
Silverlight
Silverlight是基本上微软版本的Adobe Flex /的Adobe Flash。现在已获得了一些吸引力，但似乎并没有达到的Adobe  Flash的普及程度。
Silverlight应用程序明显约束于.NET的后端，因为它是微软的产品。这意味着，你不得不 Silverlight /.NET 和Adobe  Flex / [一些服务器端脚本，如PHP] [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，ICEfaces，<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a>  Flash，微软Silverlight，现在还有HTML5，全球性的网络支配地位的竞争已经进入了崭新的时代——一个富网络应用（简称RIA，中文也 有叫富互联网应用）的时代。</strong>本文目的是界定什么是RIA，解释为何网络已经开始向RIA靠拢，探索今天已经存在的不同RIA框架，对每个框架作出一些优点和缺点的概述，并讨论这些新技术在未来将是怎么样的生存态。<br />
<a href="http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/"><img src="http://images.uheed.com/iwanna/2010/07/27/13151901685270962.png" alt="Building Rich Internet Applications with Frameworks" width="550" height="200" /></a><br />
<span id="more-4752"></span><br />
<strong>RIA是何物?</strong></p>
<p>所谓RIA，或者说富网络网应用，就是指可以像桌面程序一样操作的网络应用。 在RIA冒出来之前，大多数的网络应用都是静态的页面构建的。<br />
<a href="http://www.iwanna.cn/" target="_blank"><img src="http://images.uheed.com/iwanna/2010/07/27/1315421675113898.png" alt="What's an RIA?" width="550" height="420" /></a><br />
<a href="http://www.sumopaint.com/app/">Sumo Paint</a> 是一个基于Flash的RIA,  具有像Photoshop一样的图形编辑功能。</p>
<p>跟桌面应用程序不同，任何一个网页的互动往往需要重新加载一个全新的页面。而桌面应用程序，在另一方面，有很多更好的用户交互性，因为所有处理都是在用户的机器本身，所以能给以更加无缝的用户体验。</p>
<p>因此，软件开发商开始问自己，“我们产品应该是一个桌面应用程序还是一个Web应用程序呢？”</p>
<p>这一直是一个公平的问题，因为这两种类型的应用程序都具有各自优点和缺点。</p>
<p>桌面应用程序具有流畅的用户交互性，但软件是售出去的，会遇到发布和更新的问题。</p>
<p>Web应用程序，另一方面，很容易从网上获得，摆脱相关的软件发布和更新的问题，但在用户交互性体验非常差。</p>
<p>因此，怎么样才能两全其美呢？</p>
<p>RIA就是两全其美。RIA通过网络发布，有非常丰富的用户交互。得益于Ajax的出现，一个无需刷新就可以发送服务器请求的网络应用的方法，新技术出现，加入了RIA的运动。</p>
<p>基于这些技术出现了一些框架，帮助开发人员构建和部署富网络应用程序，如<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，ICEfaces，<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a> Flash 4（Flex 3前身），微软Silverlight，以及HTML5的。</p>
<p>让我们来一个个探讨RIA的框架。</p>
<p><strong>网络应用的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库</strong></p>
<p><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，例如 <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>和<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">MooTools</a> 是首批技术之一，可以真正的帮助部署流畅和互动的富网络应用。它们提供通过杠杆客户端脚本来处理前端接口功能的RIA框架。它们是一些基本的 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>文件，由一些有用的，经过跨浏览器测试功能的集成。可以使用Ajax，以及处理普通的基于用户驱动事件的交互，如显示和隐藏内容。</p>
<p>目前最流行的有<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>（尤其是使用<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a> UI），<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">MooTools</a>，YIU（雅虎用户界面库），以及EXTJS。这些库包括RIA组件，如网格，图表和复杂的表单元素，以及处理Ajax的工具。最引人入胜的是，大部分网络开发的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库都是开源的。</p>
<p>如果你不想购买一个集成开发环境（IDE），但仍希望在自己的网站绚丽而专业的RIA功能，<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库是一个很不错的选择。</p>
<p>使用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库的网站有<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a>，Digg，雅虎，亚马逊，微软，Twitter，以及Best Buy。</p>
<p><strong>ICEfaces</strong></p>
<p>ICEfaces是标准的JavaServer Faces（JSF）的框架的扩展，旨在去除方程中的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>从而简化程序员的工作流程。换句话说，ICEfaces通过Java应用接口为你处理了所有的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>/Ajax。通过删除这些自定义<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>函数的复杂引入，大大简化了创建富网络应用的任务。</p>
<p>如果你的团队主要成员是Java开发人员，或者如果你的网络应用程序不需要其它ICEfaces没有的复杂组件，又或者如果你的网络应用程序是事件驱动的，那么使用ICEfaces是很好的选择。如果你的网路应用是事件驱动的，请确定你已经了解ICEfaces不提供真正的“服务器推”技术的，HTML5，Flash Builder 4和Silverlight都支持的。不过，相应地ICEfaces使用长轮询的方法来模拟服务器推技术。</p>
<p>使用ICEfaces的网站有波音，美国航空航天局，联合太平洋公司，T-Mobile，以及美国银行。</p>
<p><strong><a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a> Flash Builder 4</strong></p>
<p>Flash已经出现了很长一段时间，但是用使用Flash来构建整个网络应用十分麻烦，直到Flex的引进，这是Flash的一个扩展，提供RIA网络组 件。</p>
<p><a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a> Flash Builder  4最令人兴奋的是它的跨平台和跨浏览器特性，允许程序在所有的操作系统和所有的浏览器上以同样的方式运行。相比于<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>，浏览器有不同的 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>引擎管理和处理的代码，而<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a>的Flash只有一个引擎，用户通过<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a>  Flash浏览器插件来安装（通常的情况是他们有了）。</p>
<p>Flash Builder 4  应用之所以能如此，因为它们已经嵌入到HTML页面，这意味着浏览器本身并没有对应用程序的性能有什么影响。这意味着你如果你乐意，  你还可以在IE6上运行最复杂的网络应用程序。（这当然简单，因为Flash插件/引擎经常会更新，因此只是稍微依赖于用户插件的版本）。</p>
<p>这些应用通常是伴随着服务器端处理，比如一个Java后端处理，而且需要Flash Builder 4IDE做开发。</p>
<p>如果你的团队主要是Java开发（因为搭配Java运作良好），或者你的应用程序使用事件驱动的构架，可以选择<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a> Flash Builder  4。</p>
<p>使用Flash作为网络应用程序的网站有Mint.com，Flickr和Hyundai。</p>
<p><strong>Silverlight</strong></p>
<p>Silverlight是基本上微软版本的<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a> Flex /的<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a> Flash。现在已获得了一些吸引力，但似乎并没有达到的<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a>  Flash的普及程度。</p>
<p>Silverlight应用程序明显约束于.NET的后端，因为它是微软的产品。这意味着，你不得不 Silverlight /.NET 和<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a>  Flex / [一些服务器端脚本，如PHP] 之间整合考虑。</p>
<p>如果你的网络应用需要复杂的图形，或者如果你的团队主要是.NET开发人员，又或者如果你的应用程序使用事件驱动的架构，那你可以选择 Silverlight。</p>
<p>使用Silverlight的网站，如Netflix。</p>
<p><strong>HTML5</strong></p>
<p>HTML5的是RIA运动中的最新发展。  HTML5，在本质上是HTML4，<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>，CSS，<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>代码库以及Falsh的最优合并，利用API模型成为一个单一规 范。 HTML5的是一个开放的技术，这意味着不会有单一的主管团体如Flash的<a href="http://www.iwanna.cn/tags/adobe/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Adobe">Adobe</a>或Silverlight的微软。</p>
<p>由于HTML5规范还没有完成，IE9尚未发布，要建立产品级的网络应用，你还需要等待一点点时间。</p>
<p>目前，所有主要浏览器除了IE8都支持HTML5。由于IE8的浏览器市场占据了主要部分，在IE9发布之前，HTML5实在难以成为主流。</p>
<p>一旦HTML5得到广泛支持，如果你不想购买和学习的IDE（像Flex和Silverlight框架所必需的），如果你的应用程序使用事件驱动架构，或 者如果你喜欢使用内置的HTML功能和<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> API 功能而不是使用第三方<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，那么使用HTML是很好的选择。</p>
<p>尽管HTML5中可以很好地处理图形，但是使用Flash和Silverlight来处理复杂图形和动画在目前仍然容易/更快的选择。</p>
<p><strong>RIA 的未来</strong><br />
<a href="http://www.iwanna.cn/" target="_blank"><img src="http://images.uheed.com/iwanna/2010/07/27/13154422012391927.jpg" alt="使用框架建立富联网应用 | iwanna.cn 我想网" /></a></p>
<p>HTML5应用程序是互联网的未来吗？不完全是。只要那些创造性和创新性的网络开发人员还在不断的去创造一些特别的东西，就会总是出现一些新技术可以造出 些HTML5或其他任何网络技术无法完成的神奇的东西。</p>
<p><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>库，ICEfaces，Flash，Silverlight和HTML5的存在首要原因是其创造力和创新性。未来的网络将会由许多 共存的技术组成，就像现在。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/27/4752/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/27/4752/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/27/4752/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/27/4752/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/27/4752/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/tags/adobe/" title="Adobe" rel="tag nofollow">Adobe</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/flash/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flash-adobe-ui/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flex-adobe-ui/" title="Flex" rel="tag nofollow">Flex</a>, <a href="http://www.iwanna.cn/topics/ui/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/tags/html/" title="HTML" rel="tag nofollow">HTML</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/mootools-javascript-ui/" title="MooTools" rel="tag nofollow">MooTools</a>, <a href="http://www.iwanna.cn/tags/ria/" title="RIA" rel="tag nofollow">RIA</a>, <a href="http://www.iwanna.cn/tags/silverlight/" title="Silverlight" rel="tag nofollow">Silverlight</a>, <a href="http://www.iwanna.cn/topics/news/technology_news/" title="Technology" rel="tag nofollow">Technology</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/yui/" title="YUI" rel="tag nofollow">YUI</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/03/1913/" title="使用Adobe Flex 3开发(MMO)大型多人在线游戏 (2009年07月3日)">使用Adobe Flex 3开发(MMO)大型多人在线游戏</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/29/2073/" title="RIA特别专题和Flash开发平台工具下载资源发布 (2009年07月29日)">RIA特别专题和Flash开发平台工具下载资源发布</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/713/" title="24 个漂亮的个性化 HTML 表单技术 (2009年04月20日)">24 个漂亮的个性化 HTML 表单技术</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/16/4013/" title="10个绝妙的HTML5，CSS和Javascript示例 (2010年06月16日)">10个绝妙的HTML5，CSS和Javascript示例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/02/04/2487/" title="10个基于 JavaScript 的 WYSIWYG 编辑器 (2010年02月4日)">10个基于 JavaScript 的 WYSIWYG 编辑器</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/21/3284/" title="10个Google 推动的 AJAX 库 API (2010年05月21日)">10个Google 推动的 AJAX 库 API</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/27/4752/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax跨域访问解决方案</title>
		<link>http://www.iwanna.cn/archives/2010/07/12/4478/</link>
		<comments>http://www.iwanna.cn/archives/2010/07/12/4478/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 13:54:07 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=4478</guid>
		<description><![CDATA[ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互，而浏览器出于安全考虑，不允许js代码进行跨域操作，所以就诞生了很 多跨域的解决方案。当本域和子域间进行访问时最简单的就是设置document.domain，当不同域的访问，大概有下列方法：
1.web端代理的方式，即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面，由该页 面代替用户页面完成交互，从而返回合适的结果。
2.iframe，解决方案就是用window.location对象的hash属性，利用JS改变hash值 网页不会刷新，可以这样实现通过JS访问hash值来做到通信，大体就是AB网站各嵌入一个对方网站的iframe，然后通过连续不断的监听hash值的 变化来进行通信。比如A网站通过改变B网站iframe的hash后，B网站监听到hash的变化后就进行处理，这种方式需要开发者可以控制两个网站的代 码。

3.通过script标签来请求，原理就是在本域内的A内生成一个JS标签，它的SRC指向请求的另外一个域的 某个页面B，这个src里面通常会加一个A页面定义好的回调函数，B返回数据即可，可以直接返回调用这个回调函数，这种跨域的通信方式被称为JSONP， 此方案存在的缺陷是， script的src属性完成该调用时采取的方式时get方式，如果请求时传递的字符串过大时，可能会无法正常运行。
4.window.name，window.name是一种解决跨域数据传输的新技术，通过在iframe中加 载一个跨域的HTML文件，并且在HTML文件中设置window.name的值为需要传给接受者的数据，接收者就可以取得到window.name的值 并且返回，比较关键的是同源策略的影响对location的控制不受限制，所以需要加载一个代理的页面来让发送页面读取window.name.
5.使用flash，原理是JavaScript将数据提交给本域下的 Flash，通过 Flash   中转去访问其他域的接口，只需要其他域的根目录下有一个crossdomain.xml文件，文件中设置允许所有域名或允许本域访问即可。
了解更多，请看：
http://www.phpchina.com/html/48/n-33848.html
http://www.sitepen.com/blog/2008/07/22/windowname-transport/
http://www.planabc.net/2008/09/01/window_name_transport/
http://hikejun.com/demo/windowname/demo_windowname.html
http://blog.s135.com/ajaxcdr/

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Ajax, Ajax, JavaScript, JavaScript

	您可能会感兴趣的其他文章
	
	使用框架建立富联网应用 
	XmlHttpRequest的串行异步 
	10个关于Ajax的IT人需要知道的事情 
	10个Google 推动的 AJAX 库 API 
	页面输出时一些常用的小技巧 
	表单元素：40个CSS/JS风格和功能技术处理 
	网页打开新窗口的解决方案,拒绝屏蔽 
	简单的Ajax实例 
	相见恨晚的一些 JavaScript 技巧 
	用JS制作的网页版NES模拟器 IE8直接出局 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互，而浏览器出于安全考虑，不允许js代码进行跨域操作，所以就诞生了很 多跨域的解决方案。当本域和子域间进行访问时最简单的就是设置<strong>document.domain</strong>，当不同域的访问，大概有下列方法：</p>
<p><strong>1.web端代理的方式，</strong>即用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面，由该页 面代替用户页面完成交互，从而返回合适的结果。</p>
<p><strong>2.iframe，</strong>解决方案就是用window.location对象的hash属性，利用JS改变hash值 网页不会刷新，可以这样实现通过JS访问hash值来做到通信，大体就是AB网站各嵌入一个对方网站的iframe，然后通过连续不断的监听hash值的 变化来进行通信。比如A网站通过改变B网站iframe的hash后，B网站监听到hash的变化后就进行处理，这种方式需要开发者可以控制两个网站的代 码。<br />
<span id="more-4478"></span><br />
<strong>3.通过script标签来请求，</strong>原理就是在本域内的A内生成一个JS标签，它的SRC指向请求的另外一个域的 某个页面B，这个src里面通常会加一个A页面定义好的回调函数，B返回数据即可，可以直接返回调用这个回调函数，这种跨域的通信方式被称为JSONP， 此方案存在的缺陷是， script的src属性完成该调用时采取的方式时get方式，如果请求时传递的字符串过大时，可能会无法正常运行。</p>
<p><strong>4.window.name，</strong>window.name是一种解决跨域数据传输的新技术，通过在iframe中加 载一个跨域的HTML文件，并且在HTML文件中设置window.name的值为需要传给接受者的数据，接收者就可以取得到window.name的值 并且返回，比较关键的是同源策略的影响对location的控制不受限制，所以需要加载一个代理的页面来让发送页面读取window.name.</p>
<p><strong>5.使用flash，</strong>原理是<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>将数据提交给本域下的 Flash，通过 Flash   中转去访问其他域的接口，只需要其他域的根目录下有一个crossdomain.xml文件，文件中设置允许所有域名或允许本域访问即可。</p>
<p>了解更多，请看：</p>
<p><a href="http://www.phpchina.com/html/48/n-33848.html" target="_blank">http://www.phpchina.com/html/48/n-33848.html</a></p>
<p><a href="http://www.sitepen.com/blog/2008/07/22/windowname-transport/" target="_blank">http://www.sitepen.com/blog/2008/07/22/windowname-transport/</a></p>
<p><a href="http://www.planabc.net/2008/09/01/window_name_transport/" target="_blank">http://www.planabc.net/2008/09/01/window_name_transport/</a></p>
<p><a href="http://hikejun.com/demo/windowname/demo_windowname.html" target="_blank">http://hikejun.com/demo/windowname/demo_windowname.html</a></p>
<p><a href="http://blog.s135.com/ajaxcdr/" target="_blank">http://blog.s135.com/ajaxcdr/</a></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/07/12/4478/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/07/12/4478/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/07/12/4478/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/07/12/4478/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/07/12/4478/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/21/3284/" title="10个Google 推动的 AJAX 库 API (2010年05月21日)">10个Google 推动的 AJAX 库 API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4383/" title="网页打开新窗口的解决方案,拒绝屏蔽 (2010年07月6日)">网页打开新窗口的解决方案,拒绝屏蔽</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/29/2874/" title="相见恨晚的一些 JavaScript 技巧 (2010年04月29日)">相见恨晚的一些 JavaScript 技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/09/18/2252/" title="用JS制作的网页版NES模拟器 IE8直接出局 (2009年09月18日)">用JS制作的网页版NES模拟器 IE8直接出局</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/07/12/4478/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10个Google 推动的 AJAX 库 API</title>
		<link>http://www.iwanna.cn/archives/2010/05/21/3284/</link>
		<comments>http://www.iwanna.cn/archives/2010/05/21/3284/#comments</comments>
		<pubDate>Fri, 21 May 2010 14:02:22 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=3284</guid>
		<description><![CDATA[我们知道，Google在奉行他们一贯不作恶的行为之外，也在为互联网的发展起着不可估量的促进作用。作为一名web开发者，想必在您碰到无法解决的问题时，肯定会想到从http://code.google.com/ 去寻找解决方案，在使用的同时，不知您是否有发现，在页面的左边导航栏中标识有“开发人员资源”栏目。遵循这以导航，您会发现API 和开发人员工具链接。进去之后在Google所提供的产品中有标识AJAX菜单。如下图所示：

从图中圈出来的按钮点进去之后，您就会发现AJAX 库 API栏目。这里有Google支持的 AJAX 库 API所有栏目。
这里给大家列出的是比较常用的 AJAX 库 API 外链地址。

jquery
&#60;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&#62;&#60;/script&#62;
jquery UI
&#60;script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"&#62;&#60;/script&#62;
Chrome Frame
&#60;script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js"&#62;&#60;/script&#62;
swfobject
&#60;script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"&#62;&#60;/script&#62;
mootools
&#60;script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.4/mootools-yui-compressed.js"&#62;&#60;/script&#62;
Yahoo! UI
&#60;script src="http://ajax.googleapis.com/ajax/libs/yui/2.8.1/build/yuiloader/yuiloader-min.js"&#62;&#60;/script&#62;
Prototype
&#60;script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"&#62;&#60;/script&#62;
Ext.JS
&#60;script src="http://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"&#62;&#60;/script&#62;
Dojo
&#60;script src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.3/dojo/dojo.xd.js"&#62;&#60;/script&#62;
Scriptaculous
&#60;script src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js"&#62;&#60;/script&#62;

© 我想网 Akon 所有 , 2010. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Ajax, Ajax, Google, JavaScript, JavaScript

	您可能会感兴趣的其他文章
	
	使用框架建立富联网应用 
	XmlHttpRequest的串行异步 
	Ajax跨域访问解决方案 
	10个关于Ajax的IT人需要知道的事情 
	页面输出时一些常用的小技巧 
	连线：开放度将决定Google Me是天才产品还是垃圾产品 
	谷歌街景再出奇观，惊现海鸥！ 
	表单元素：40个CSS/JS风格和功能技术处理 
	美化你的Google阅读器 
	网页打开新窗口的解决方案,拒绝屏蔽 



Feed enhanced by Better Feed from  [...]]]></description>
			<content:encoded><![CDATA[<p>我们知道，<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a>在奉行他们一贯不作恶的行为之外，也在为互联网的发展起着不可估量的促进作用。作为一名web开发者，想必在您碰到无法解决的问题时，肯定会想到从<a href="http://code.google.com/">http://code.google.com/</a> 去寻找解决方案，在使用的同时，不知您是否有发现，在页面的左边导航栏中标识有“<strong>开发人员资源</strong>”栏目。遵循这以导航，您会发现<strong><a href="http://code.google.com/more/">API 和开发人员工具</a></strong>链接。进去之后在<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a>所提供的产品中有标识AJAX菜单。如下图所示：<br />
<img src="http://i709.photobucket.com/albums/ww92/zsmin/iwanna/Article/201005/Google-AJAX-API.jpg" alt="10个Google 推动的 AJAX 库 API" /><br />
从图中圈出来的按钮点进去之后，您就会发现<strong><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/">AJAX 库 API</a></strong>栏目。这里有<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a>支持的 AJAX 库 API所有栏目。<br />
这里给大家列出的是<strong><a href="http://www.iwanna.cn/archives/2010/05/21/3284/" title="10个Google 推动的 AJAX 库 API">比较常用的 AJAX 库 API 外链地址</a></strong>。<br />
<span id="more-3284"></span></p>
<h2><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a></h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>/1.4.2/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>.min.js"&gt;&lt;/script&gt;</pre>
<h2><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a> UI</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>-ui.min.js"&gt;&lt;/script&gt;</pre>
<h2>Chrome Frame</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js"&gt;&lt;/script&gt;</pre>
<h2>swfobject</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"&gt;&lt;/script&gt;</pre>
<h2><a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">mootools</a></h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">mootools</a>/1.2.4/<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">mootools</a>-yui-compressed.js"&gt;&lt;/script&gt;</pre>
<h2>Yahoo! UI</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/yui/2.8.1/build/yuiloader/yuiloader-min.js"&gt;&lt;/script&gt;</pre>
<h2>Prototype</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"&gt;&lt;/script&gt;</pre>
<h2>Ext.JS</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"&gt;&lt;/script&gt;</pre>
<h2><a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a></h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>/1.4.3/<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>/<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>.xd.js"&gt;&lt;/script&gt;</pre>
<h2>Scriptaculous</h2>
<pre>&lt;script src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/scriptaculous.js"&gt;&lt;/script&gt;</pre>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2010. |
<a href="http://www.iwanna.cn/archives/2010/05/21/3284/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2010/05/21/3284/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2010/05/21/3284/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2010/05/21/3284/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2010/05/21/3284/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/google/" title="Google" rel="tag nofollow">Google</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/01/4299/" title="连线：开放度将决定Google Me是天才产品还是垃圾产品 (2010年07月1日)">连线：开放度将决定Google Me是天才产品还是垃圾产品</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/19/2586/" title="谷歌街景再出奇观，惊现海鸥！ (2010年03月19日)">谷歌街景再出奇观，惊现海鸥！</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/19/4628/" title="美化你的Google阅读器 (2010年07月19日)">美化你的Google阅读器</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4383/" title="网页打开新窗口的解决方案,拒绝屏蔽 (2010年07月6日)">网页打开新窗口的解决方案,拒绝屏蔽</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2010/05/21/3284/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX是如何工作的: AJAX的10个实践运用</title>
		<link>http://www.iwanna.cn/archives/2009/07/08/1849/</link>
		<comments>http://www.iwanna.cn/archives/2009/07/08/1849/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 13:32:06 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Translate]]></category>
		<category><![CDATA[XMLHTTP]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1849</guid>
		<description><![CDATA[近几年，Ajax已变得越来越流行了，这使得网络应用程序变得越来越像是桌面应用程序。Ajax可以提供很多其它程序无法完成的额外的功能。
什么是 AJAX? 它是怎么工作的?
什么是Ajax？它是如何运作的？
Ajax是异步JavaScript脚本和 XML（Asynchronous JavaScript and XML）的缩写，用来使浏览器端应用程序和服务器端进行通信。在Ajax出现以前，浏览器端应用程序是无法直接和服务器进行通信的，只能使用刷新和加载页 面的方法来实现。而有了Ajax之后，浏览器和服务器端就可以自由通信了。

以下简述Ajax脚本的运行路径：

行为引发事件，如用户单击按钮；
Ajax响应该事件，并使用XML向服务器发送请求；
服务器端程序（PHP、ASP或其他）接收到Ajax发来的数据并进行处理，从数据库中调用数据等；
服务器端再使用XML向客户端返回数据；
另外一个JavaScript函数，通常称之为回调函数，接收到服务器端发来的数据并据此更新页面。

本文将讨论我们如何通过不同的脚本来实现各种各样的功能。
1、登录表单

按传统的做法，用户登录时会被定向到一个登录页面，随后再返回登录前的页面。使用Ajax后，用户可以直接在原页面输入用户名和密码。Ajax会将 这些信息发送给服务器进行验证。服务器会返回数据告知浏览器是否验证通过，浏览器可相应地更新页面。Digg就有这样的登录表单。
示例：Digg.com （页面顶端）
插件：jQuery Form Plugin
2、自动完成

谷歌是最早开始使用Ajax的公司之一，其搜索建议功能则是最先使用Ajax的地方，并开发了第一个自动完成工具。在搜索框输入数据后，Ajax会 从服务器端接受数据，找出数据库中存储的常用搜索关键字并进行提示。自动完成功能是非常有用的，当表单可以输入多个可能的值时，显示一个下拉列表框供用户 选择，非常人性化。
示例：Google Search
插件：jq autocomplete
3、投票和排行

网页收藏站点如Digg、Reddit等往往会让用户来决定什么内容会放在首页，使用的方法便是投票。他们使用Ajax来实现这个功能，这样用户就能够方便快捷地表达自己的意见了。
示例：Reddit
4、使用用户内容更新

Twitter之所以流行的一大原因是其简单易用的界面。当用户发送了一个消息后，这条消息会立刻添加到用户的页面中，所有的相应内容都会进行更 新。最近，Twitter开始使用Ajax对“热门话题”进行更新。每隔几秒，我们就可以知道大家在忙些什么、关注些什么，非常快速。
示例：Twitter
5、表单的提交和验证

表单永远是最麻烦的东西，但Ajax让它们变得友好起来。Ajax可以派很多用处，从上面提到的自动完成功能，再到现在的表单验证和提交。有些网站使用Ajax检查用户输入的数据是否达到了某些要求，如密码长度或者E-mail地址、URL地址是否合法等
示例：10 Cool jQuery Form Plugins
6、聊天室和即时消息

在线聊天室在IRC之后多年才出现的只用应用。如今，聊天室和即时消息可以完全由浏览器来处理。在聊天室或即时消息应用程序中，Ajax通常要做两 件事情，可以想象一下你的耳朵和嘴巴。你的嘴巴要告诉服务器你发送了一条消息，而耳朵则要保持和服务器的联系，以便接受对伐发送的消息，并显示在页面上
示例：Meebo Chat (使用了Ajax）
插件：GMail/Facebook Style Chat Script
7、灵巧的用户界面

Ajax的一个常规应用就是创建整洁、灵巧的用户界面，使用户能在一个页面中做更多的事情。它的好处体现在两个地方：首先，它能使应用程序的响应更 为快速，操作更为简单；其次，它能减少浏览器向服务器的请求次数，从而减少带宽和加载时间。有一个免费的上传服务，名为Drop.io，使用的就是这项技 术。而谷歌则更是把这项应用发挥到了极致，使用Ajax开发出了类桌面应用程序，如谷歌文档、谷歌地图等。
参考：jQuery UI Library
8、插件

Ajax不仅可以调用本地资源，还能够和其他服务器进行通信。像Wordpress之类的CMS（Content Management System 内容管理系统），它们的插件就是用Ajax实现的。又如Google Adsense，用的也是这样的方法。
示例：Google Adsense
插件：将外部内容加载到div中
9、使用Lightbox代替弹出窗口

弹出窗口拦截程序越来越流行了，原因当然是弹出窗口实在是很烦人。而Lightbox是在浏览器窗口内部显示的，所以拦截程序不能拿它怎么样。而且 Lightbox也不会让用户感到多厌烦，所以有些人就用它来作广告，如Darren Rowe的ProBlogger.com。Lightbox同样可以用来做登录表单或注册表单，比如匿名用户在Digg上投票时会被要求进行注册。
示例：Logo Sauce
插件：Lightbox Plugin
10、Ajax和Flash的结合

很少有人会拿Ajax和Flash和一起使用，但是这样做却能起到非常好的效果。Flash游戏网站Kongregate使用了这项技术，效果很棒。通过使用他们的API，用户可以在游戏中赢取各种“徽章”，并使用Ajax将数据传输给服务器，更新用户的信息。
示例：Kongregate
插件：jQuery Flash Plugin

© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Ajax, Ajax, Flash, Translate, XMLHTTP

	您可能会感兴趣的其他文章
	
	Ajax之XMLHTTP学习理解 [...]]]></description>
			<content:encoded><![CDATA[<p>近几年，Ajax已变得越来越流行了，这使得网络应用程序变得越来越像是桌面应用程序。Ajax可以提供很多其它程序无法完成的额外的功能。</p>
<p>什么是 AJAX? 它是怎么工作的?</p>
<p><strong>什么是Ajax？它是如何运作的？</strong></p>
<p>Ajax是异步<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>脚本和 XML（Asynchronous <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> and XML）的缩写，用来使浏览器端应用程序和服务器端进行通信。在Ajax出现以前，浏览器端应用程序是无法直接和服务器进行通信的，只能使用刷新和加载页 面的方法来实现。而有了Ajax之后，浏览器和服务器端就可以自由通信了。<br />
<span id="more-1849"></span><br />
<strong>以下简述Ajax脚本的运行路径：</strong></p>
<ul>
<li>行为引发事件，如用户单击按钮；</li>
<li>Ajax响应该事件，并使用XML向服务器发送请求；</li>
<li>服务器端程序（PHP、ASP或其他）接收到Ajax发来的数据并进行处理，从数据库中调用数据等；</li>
<li>服务器端再使用XML向客户端返回数据；</li>
<li>另外一个<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>函数，通常称之为回调函数，接收到服务器端发来的数据并据此更新页面。</li>
</ul>
<p>本文将讨论我们如何通过不同的脚本来实现各种各样的功能。</p>
<p><strong>1、登录表单</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.digg.com/"><img src="http://noupe.com/img/ajax-works/ajax-1.jpg" alt="Ajax Post Image" /></a></p>
<p>按传统的做法，用户登录时会被定向到一个登录页面，随后再返回登录前的页面。使用Ajax后，用户可以直接在原页面输入用户名和密码。Ajax会将 这些信息发送给服务器进行验证。服务器会返回数据告知浏览器是否验证通过，浏览器可相应地更新页面。Digg就有这样的登录表单。</p>
<p>示例：<a href="http://www.digg.com/">Digg.com</a> （页面顶端）<br />
插件：<a href="http://malsup.com/jquery/form/">jQuery Form Plugin</a></p>
<p><strong>2、自动完成</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.google.com/"><img src="http://noupe.com/img/ajax-works/ajax-2.jpg" alt="Ajax Post Image" /></a></p>
<p>谷歌是最早开始使用Ajax的公司之一，其搜索建议功能则是最先使用Ajax的地方，并开发了第一个自动完成工具。在搜索框输入数据后，Ajax会 从服务器端接受数据，找出数据库中存储的常用搜索关键字并进行提示。自动完成功能是非常有用的，当表单可以输入多个可能的值时，显示一个下拉列表框供用户 选择，非常人性化。</p>
<p>示例：<a href="http://www.google.com/">Google Search</a><br />
插件：<a href="http://plugins.jquery.com/project/jq-autocomplete">jq autocomplete</a></p>
<p><strong>3、投票和排行</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.reddit.com/"><img src="http://noupe.com/img/ajax-works/ajax-3.jpg" alt="Ajax Post Image" /></a></p>
<p>网页收藏站点如Digg、Reddit等往往会让用户来决定什么内容会放在首页，使用的方法便是投票。他们使用Ajax来实现这个功能，这样用户就能够方便快捷地表达自己的意见了。</p>
<p>示例：<a href="http://www.reddit.com/">Reddit</a></p>
<p><strong>4、使用用户内容更新</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.twitter.com/"><img src="http://noupe.com/img/ajax-works/ajax-4.jpg" alt="Ajax Post Image" /></a></p>
<p>Twitter之所以流行的一大原因是其简单易用的界面。当用户发送了一个消息后，这条消息会立刻添加到用户的页面中，所有的相应内容都会进行更 新。最近，Twitter开始使用Ajax对“热门话题”进行更新。每隔几秒，我们就可以知道大家在忙些什么、关注些什么，非常快速。</p>
<p>示例：<a href="http://www.twitter.com/">Twitter</a></p>
<p><strong>5、表单的提交和验证</strong></p>
<p class="img" style="text-align: center;"><a href="http://kawika.org/jquery/checkbox/"><img src="http://noupe.com/img/ajax-works/ajax-5.jpg" alt="Ajax Post Image" /></a></p>
<p>表单永远是最麻烦的东西，但Ajax让它们变得友好起来。Ajax可以派很多用处，从上面提到的自动完成功能，再到现在的表单验证和提交。有些网站使用Ajax检查用户输入的数据是否达到了某些要求，如密码长度或者E-mail地址、URL地址是否合法等</p>
<p>示例：<a href="http://www.thinkflick.com/freebies/10-great-jquery-form-plugins/">10 Cool jQuery Form Plugins</a></p>
<p><strong>6、聊天室和即时消息</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.meebo.com/"><img src="http://noupe.com/img/ajax-works/ajax-6.jpg" alt="Ajax Post Image" /></a></p>
<p>在线聊天室在IRC之后多年才出现的只用应用。如今，聊天室和即时消息可以完全由浏览器来处理。在聊天室或即时消息应用程序中，Ajax通常要做两 件事情，可以想象一下你的耳朵和嘴巴。你的嘴巴要告诉服务器你发送了一条消息，而耳朵则要保持和服务器的联系，以便接受对伐发送的消息，并显示在页面上</p>
<p>示例：<a href="http://www.meebo.com/">Meebo Chat</a> (使用了Ajax）<br />
插件：<a href="http://anantgarg.com/2009/05/13/gmail-facebook-style-jquery-chat/">GMail/Facebook Style Chat Script</a></p>
<p><strong>7、灵巧的用户界面</strong></p>
<p class="img" style="text-align: center;"><a href="http://jqueryui.com/demos/droppable/"><img src="http://noupe.com/img/ajax-works/ajax-7.jpg" alt="Ajax Post Image" /></a></p>
<p>Ajax的一个常规应用就是创建整洁、灵巧的用户界面，使用户能在一个页面中做更多的事情。它的好处体现在两个地方：首先，它能使应用程序的响应更 为快速，操作更为简单；其次，它能减少浏览器向服务器的请求次数，从而减少带宽和加载时间。有一个免费的上传服务，名为Drop.io，使用的就是这项技 术。而谷歌则更是把这项应用发挥到了极致，使用Ajax开发出了类桌面应用程序，如谷歌文档、谷歌地图等。</p>
<p>参考：<a href="http://jqueryui.com/">jQuery UI Library</a></p>
<p><strong>8、插件</strong></p>
<p class="img" style="text-align: center;"><a href="https://www.google.com/adsense/static/en_US/AdFormats.html?hl=en_US&amp;gsessionid=jfcW8Ypze14jT1AcH9jPTg"><img src="http://noupe.com/img/ajax-works/ajax-8.jpg" alt="Ajax Post Image" /></a></p>
<p>Ajax不仅可以调用本地资源，还能够和其他服务器进行通信。像Wordpress之类的CMS（Content Management System 内容管理系统），它们的插件就是用Ajax实现的。又如<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a> Adsense，用的也是这样的方法。</p>
<p>示例：<a href="http://www.adsense.com/">Google Adsense</a><br />
插件：<a href="http://www.hotscripts.com/listing/jquery-load-external-content-into-div/">将外部内容加载到div中</a></p>
<p><strong>9、使用Lightbox代替弹出窗口</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.logosauce.com/"><img src="http://noupe.com/img/ajax-works/ajax-9.jpg" alt="Ajax Post Image" /></a></p>
<p>弹出窗口拦截程序越来越流行了，原因当然是弹出窗口实在是很烦人。而Lightbox是在浏览器窗口内部显示的，所以拦截程序不能拿它怎么样。而且 Lightbox也不会让用户感到多厌烦，所以有些人就用它来作广告，如Darren Rowe的ProBlogger.com。Lightbox同样可以用来做登录表单或注册表单，比如匿名用户在Digg上投票时会被要求进行注册。</p>
<p>示例：<a href="http://www.logosauce.com/">Logo Sauce</a><br />
插件：<a href="http://leandrovieira.com/projects/jquery/lightbox/">Lightbox Plugin</a></p>
<p><strong>10、Ajax和Flash的结合</strong></p>
<p class="img" style="text-align: center;"><a href="http://www.kongregate.com/"><img src="http://noupe.com/img/ajax-works/ajax-10.jpg" alt="Ajax Post Image" /></a></p>
<p>很少有人会拿Ajax和Flash和一起使用，但是这样做却能起到非常好的效果。Flash游戏网站Kongregate使用了这项技术，效果很棒。通过使用他们的API，用户可以在游戏中赢取各种“徽章”，并使用Ajax将数据传输给服务器，更新用户的信息。</p>
<p>示例：<a href="http://www.kongregate.com/">Kongregate</a><br />
插件：<a href="http://webscripts.softpedia.com/scriptDownload/jQuery-Flash-Plugin-Download-44476.html">jQuery Flash Plugin</a></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/07/08/1849/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/07/08/1849/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/07/08/1849/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/07/08/1849/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/07/08/1849/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/topics/ui/adobe/flash-adobe-ui/" title="Flash" rel="tag nofollow">Flash</a>, <a href="http://www.iwanna.cn/topics/iwanna/translate-iwanna/" title="Translate" rel="tag nofollow">Translate</a>, <a href="http://www.iwanna.cn/tags/xmlhttp/" title="XMLHTTP" rel="tag nofollow">XMLHTTP</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/302/" title="Ajax之XMLHTTP学习理解 (2009年04月9日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1206/" title="Google AJAX Libraries API (2009年05月27日)">Google AJAX Libraries API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/07/08/1849/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XmlHttpRequest的串行异步</title>
		<link>http://www.iwanna.cn/archives/2009/06/23/1862/</link>
		<comments>http://www.iwanna.cn/archives/2009/06/23/1862/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 04:32:03 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1862</guid>
		<description><![CDATA[默认情况下，我们总是喜欢用异步XHR请求来提高Web应用的响应性。然而，你考虑过如何让你的XHR请求串行调用吗？毕竟在有些情况下，XHR请求必须按照顺序调用，比如B的调用依赖于A的结果。
你可以使用同步Ajax请求，但是那会暂时锁住浏览器。Thibaud Lopez Schneider在一篇文章中说明了同步Ajax和


串行发生的异步请求

之间的区别。
他创建了一个网站asynchronous.me用来生成简单的示例代码。如果查看串行异步XHR的示例代码的话，你会发现它其实很简单，只是把下一个方法作为上一个方法的回调方法。
function run() {
    request1(function () {
        request2(function () {
            request3(function () {
                done();
            });
        });
    });
}
function request1(callback1) {
    // request 1
    print("request1");
    var xmlHttpRequest1 = [...]]]></description>
			<content:encoded><![CDATA[<p>默认情况下，我们总是喜欢用异步XHR请求来提高Web应用的响应性。然而，你考虑过如何让你的XHR请求串行调用吗？毕竟在有些情况下，XHR请求必须按照顺序调用，比如B的调用依赖于A的结果。</p>
<p>你可以使用同步Ajax请求，但是那会暂时锁住浏览器。Thibaud Lopez Schneider在<a href="http://www.thibaudlopez.net/xhr/Writing%20effective%20asynchronous%20XmlHttpRequests.pdf" target="_blank">一篇文章</a>中说明了同步Ajax和<br />
<span id="more-1862"></span><br />
<img class="alignnone size-medium wp-image-6974" title="sjaxlock" src="http://ajaxian.com/wp-content/uploads/sjaxlock.png" alt="" width="300" height="200" /></p>
<p>串行发生的异步请求</p>
<p><img class="alignnone size-medium wp-image-6975" title="serialajax" src="http://ajaxian.com/wp-content/uploads/serialajax.png" alt="" width="300" height="171" /></p>
<p>之间的区别。</p>
<p>他创建了一个网站<a href="http://www.asynchronous.me/">asynchronous.me</a>用来生成简单的示例代码。如果查看串行异步XHR的示例代码的话，你会发现它其实很简单，只是把下一个方法作为上一个方法的回调方法。</p>
<pre>function run() {
    request1(function () {
        request2(function () {
            request3(function () {
                done();
            });
        });
    });
}
function request1(callback1) {
    // request 1
    print("request1");
    var xmlHttpRequest1 = new XMLHttpRequest();
    xmlHttpRequest1.open("GET", "something1?hello1", true);
    xmlHttpRequest1.onreadystatechange = function () {
        if (this.readyState == 4 &amp;&amp; this.status == 200) {
            // response 1
            print("response1=" + this.responseText);
            // continue execution in the callback
            if (callback1) {
                callback1();
            }
        }
    };
    xmlHttpRequest1.send();
}
function request2(callback2) {
    // request 2
    print("request2");
    var xmlHttpRequest2 = new XMLHttpRequest();
    xmlHttpRequest2.open("GET", "something2?hello2", true);
    xmlHttpRequest2.onreadystatechange = function () {
        if (this.readyState == 4 &amp;&amp; this.status == 200) {
            // response 2
            print("response2=" + this.responseText);
            // continue execution in the callback
            if (callback2) {
                callback2();
            }
        }
    };
    xmlHttpRequest2.send();
}
function request3(callback3) {
    // request 3
    print("request3");
    var xmlHttpRequest3 = new XMLHttpRequest();
    xmlHttpRequest3.open("GET", "something3?hello3", true);
    xmlHttpRequest3.onreadystatechange = function () {
        if (this.readyState == 4 &amp;&amp; this.status == 200) {
            // response 3
            print("response3=" + this.responseText);
            // continue execution in the callback
            if (callback3) {
                callback3();
            }
        }
    };
    xmlHttpRequest3.send();
}
function done() {
    // end
    print("done");
}

你可以把<a href="http://www.thibaudlopez.net/xhr/generator/1.3/?language=jscallbacks&amp;type=multiple&amp;asynchronous=true&amp;showResponseHandlers=false&amp;responseHandler=inner&amp;communication=serial" target="_blank">使用回调的方法</a>与使用<a href="http://www.thibaudlopez.net/xhr/generator/1.3/?language=js&amp;type=multiple&amp;asynchronous=true&amp;showResponseHandlers=false&amp;responseHandler=inner&amp;communication=serial%3Einlining%3C/a%3E%20and%20the%20interesting%20%3Ca%20href=" target="_blank">Dojo Deferred</a>的进行比较：</pre>
<pre>    function run() {
        request1().addCallback(request2).addCallback(request3).addCallback(done);
    }
    function request1() {
        // request 1
        print("request1");
        var deferred = <a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>.xhrGet({
            url: "something1?hello1",
            load: function (response) {
                // response 1
                print("response1=" + response);
            }
        });
        return deferred;
    }
    function request2() {
        // request 2
        print("request2");
        var deferred = <a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>.xhrGet({
            url: "something2?hello2",
            load: function (response) {
                // response 2
                print("response2=" + response);
            }
        });
        return deferred;
    }
    function request3() {
        // request 3
        print("request3");
        var deferred = <a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>.xhrGet({
            url: "something3?hello3",
            load: function (response) {
                // response 3
                print("response3=" + response);
            }
        });
        return deferred;
    }
    function done() {
        // end
        print("done");
    }</pre>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/06/23/1862/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/06/23/1862/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/06/23/1862/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/06/23/1862/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/06/23/1862/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/05/21/3284/" title="10个Google 推动的 AJAX 库 API (2010年05月21日)">10个Google 推动的 AJAX 库 API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/06/4383/" title="网页打开新窗口的解决方案,拒绝屏蔽 (2010年07月6日)">网页打开新窗口的解决方案,拒绝屏蔽</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/04/29/2874/" title="相见恨晚的一些 JavaScript 技巧 (2010年04月29日)">相见恨晚的一些 JavaScript 技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/09/18/2252/" title="用JS制作的网页版NES模拟器 IE8直接出局 (2009年09月18日)">用JS制作的网页版NES模拟器 IE8直接出局</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/06/23/1862/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10个关于Ajax的IT人需要知道的事情</title>
		<link>http://www.iwanna.cn/archives/2009/06/21/1854/</link>
		<comments>http://www.iwanna.cn/archives/2009/06/21/1854/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 08:54:03 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Assemble]]></category>
		<category><![CDATA[Marrow]]></category>
		<category><![CDATA[XMLHTTP]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1854</guid>
		<description><![CDATA[任何新网络技术的引进都会不同方面的影响网络的基础建设，小到微不足道，大到甚至地球破碎。在当今网络中，Ajax是一个更具有破坏性的新网络技术。为了减少你对将来网络的吃惊，下面列出了10项你需要熟知的关于Ajax的知识。]]></description>
			<content:encoded><![CDATA[<p><span>任何新网络技术的引进都会不同方面的影响网络的基础建设，小到微不足道，大到甚至地球破碎。在当今网络中，<span>Ajax</span>是一个更具有破坏性的新网络技术。为了减少你对将来网络的吃惊，下面列出了<span>10</span>项你需要熟知的关于<span>Ajax</span>的知识。</span></p>
<p><span>让我们看一组幻灯片，对于<span>Ajax</span>，什么是每一个网络专家都需要知道的。</span><br />
<span id="more-1854"></span><br />
<strong>1）</strong><strong><span>Ajax</span>是一个想法，而不仅仅是一个缩略词</strong></p>
<p><span>尽管<span>Ajax</span>通常被拼写为“异步<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>和<span>XML</span>”，但这个全称不完全合</span><span>适，因为它过分简化了这门技术的历史和实现核心。更确切地，<span>Ajax</span>包含了一种思想，这种思想认为网络应用可以退出传统的以服务器端为中心的重复发送<span>-</span>等待循环方式来建立。<span>Ajax</span>使网络应用转向更有影响的、连续的，而且渐进式的更新。<span>Ajax</span>为用户优先的体验网络应用提供了更丰富、更好的交互性。这个优势也意味着需要网络专家更多的网络控制和安全监视，潜在地，服务器和网络改造也是这样。</span></p>
<p><strong>2）</strong><strong>这确实都与<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>有关</strong></p>
<p><span><span>Ajax</span>的应用是用<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>写的，通常基于<span>XMLHttpRequest</span>对象来通信，这个<span>XMLHttpRequest</span>对象是通过万维网协议过程进行的。由于像大多的网络技术一样，它现在只是一个特定的工业标准，因此在不同浏览器中实现的显著差别还是可以找到的。不管有没有广泛的工业支持，它也可能使用其它的数据传输机制，包括传统的框架和<span>image-cookie</span>方法，以及<span>Flash</span>或<span>java</span>中二进制桥的使用。</span></p>
<p><span>无论开发者使用哪种传输方法，<span>Ajax</span>都将<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>在网络应用中提升到了一个前所未有的重要地位。现在<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>对重要的数据收集、数据通信、消费机制都有影响，所以它不再被认为是没有重大作用的二级网络技术。</span></p>
<p><span>认为<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>技术有毒的开发者们试图使用工具或框架产生其它的语言如<span>java</span>（如谷歌网络工具）来避免使用这种语言，或者在组件或标签后隐藏代码（例如<span>.Net</span>和<span>Ruby</span>）。然而最终，<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>仍会在应用中。最好是理解并学会直接使用它，因为只要你使用<span>Ajax</span>，你就使用了很多的<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>。</span></p>
<p><span><span>Ajax</span>是内嵌在网络中的，所以坏代码对网络管理员和开发者来说意味着大量的故障修理，底线是鼓励好的、有网络意识的编码。用于其他语言的具有同样组织的“规则和工具”——代码规范、测试机制和源码控制也必须应用于<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>，以此来确保<span>Ajax</span>的可支持性和健壮性。</span></p>
<p><strong>3）</strong><strong><span>XML</span>是不需要的</strong></p>
<p><span>尽管缩略词中有“<span>x</span>”，但是<span>Ajax</span>并不需要<span>XML</span>。<span>XMLHttpRequest</span>对象可以传输任意的文本格式。对于很多<span>Ajax</span>开发者来说，作为一种数据格式<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>对象符号甚至是纯<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>代码段更有意义，因为<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>是消费环境。有的开发者喜欢以纯文本或<span>HTML</span>代码段做为网页的输入，也有的使用像不太著名的<span>YAML</span>标记语言或逗号分隔值这样的数据格式。</span></p>
<p><span>当然，使用<span>XML</span>是可能的也是应当的，只是不是必需的。<span>XMLHttpRequest</span>对象不支持使用二进制格式上传文件，但是考虑到<span>Flash</span>使用一种叫做活动消息格式（<span>Action Message Format</span>）的二机制格式，所以在<span>Ajax</span>应用中也可能很快地找到类似的性质。你应该知道网络中的哪种机制正在被网络淘汰，因为淘汰的不总是<span>XML</span>，也要确保能够分析出这些机制的性能和安全性。</span></p>
<p><strong>4）</strong><strong>为<span>HTTP</span>请求的增加做好准备</strong></p>
<p><span>对网络管理员来说，支持<span>Ajax</span>应用最明显的问题是结构化编程方式使网络应用的使用从只有几百<span>KB</span>的某些不频繁响应的程序组变为更多连续的小型<span>HTTP</span>请求交换。这意味着网络绑定的网页和应用服务器会发现他们比以前更繁忙。<span>Ajax</span>将为服务器和网络应用做些什么取决于这些应用是如何建立的——开发者们一定要明白他们使用的应用间的网络冲突。</span></p>
<p><strong>5）</strong><strong>仔细地优化<span>Ajax</span>请求</strong></p>
<p><span>网络应用应该坚持发送更少的数据、更少的发送次数的网络传输规则。但是这也不是说这种规则被开发者们广泛地遵循。对网络来说很幸运的是，<span> Ajax</span>响应的<span>HTTP</span>压缩可以减少响应尺寸，并且在所有现代的浏览器中都支持。但是由于动态压缩的额外开销，如果响应相对较小速度也不会改变太多。这也就是说，对网络管理员来说在服务器端打开压缩机制是明智的，但是需要明白的是，使用<span>Ajax</span>应用不会比使用传统的网络应用获得的更多。</span></p>
<p><span>我们一般使用缓存来减少发送数据的次数。但是，尽管由浏览器提供的特定<span style="color: #ff0000;">假设</span>不会在同一段时间里再次获取<span>URL</span>，大多数的<span>Ajax</span>实现还是公开敌视缓存。许多<span>Ajax</span>开发人员不是使用缓存，而是通过头设置或<span>URL</span>的唯一性来积极地战胜缓存。</span></p>
<p><span>用<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>写的客户端<span>Ajax</span>缓存使得对付缓存成为可能，但是大多数的<span>Ajax</span>库不执行这样的功能。网络专家应该为开发者们展示缓存的好处，因为<span>Ajax</span>使用缓存的好处要比使用压缩多得多。</span></p>
<p><strong>6）</strong><strong>认识到两个连接限制</strong></p>
<p><span><span>Ajax</span>应用向同一个<span>URL</span>发送两个同步的连接是受<span>HTTP</span>限制的。这是<span>HTTP</span>协议的设计方式，不是什么浏览器问题或浏览器限制。好消息是，它使许多<span>Ajax</span>开发者远离了服务器的突然崩溃，尽管微软的<span>Internet Explorer 8</span>被认为在这种限制之外运行得很好。非正式的<span>Ajax</span>应用可能是麻烦的，随着浏览器不断地改变规则，网络管理员们应该随时关注提出请求的数量，跟应用开发者们一起避免像<span style="color: #ff0000;">快速投票</span>（<span>fast polling</span>）或长期持有连接这样的设计模式。</span></p>
<p><strong>7）</strong><strong>小心响应顺序</strong></p>
<p><span>在传统的网络应用中，<span>TCP/IP</span>通信协议的网络影响——如<span>HTTP</span>响应接收的缺乏秩序，通常不被开发者和使用者所注意。基础单元、<span>HTML</span>文件在其他对象之前被接收，接着就触发请求。任何接下来的请求都触发整个新的基础文件，从而保证顺序。<span>Ajax</span>将这种固有的顺序摒除了，但是，由于这样，基于一定顺序的应用需要一个响应队列。但<span>Ajax</span>框架并不始终理解这个相关网络。因此，再一次地确认<span>Ajax</span>应用的开发者们了解这些相关的网络级别。</span></p>
<p><strong>8）</strong><strong>理解“层<span>8</span>”纠错的影响</strong></p>
<p><span>多年来，用户们一直都是通过重载页面或按“后退按钮”来纠正网络传输质量。简而言之，用户这样做有助于减轻网络问题，因为错误一般发生在预期的页面绘制之间。但是，通过<span>Ajax</span>应用错误不再那么明显。可糟糕的是，由于简单的、动画的<span>GIF</span>旋转循环提供的正确的请求状态信息很少，用户经常将错误误传。</span></p>
<p><span>开发者们很烦恼，因为许多库在认识到发生了超时时不再响应，一定发生重试，而且服务器错误和数据错误会突然出现。因为<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>检测显示的通信和代码错误很少出现在客户端，所以（使用户）无忧的无知是一种规范。为了使管理员正确地使用<span>Ajax</span>，更多的应用级监控是必需的。</span></p>
<p><strong>9）</strong><strong>旧的安全威胁被二次曝光</strong></p>
<p><span>如果你听信专家的，<span>Ajax</span>可能会显现得产生更多的攻击页面，但是事实是它不会比传统的网络应用开发环境更不安全，因为传送给可信任的服务器的<span>HTTP</span>输入——头消息、检索字符串和消息体是一样的。如果在你的网络开发组可信任的客户端代码和输入数据不被暗地里禁止，那么<span>Ajax</span>将会使事情朝着那个方向推进。</span></p>
<p><span>跨站点脚本（<span>XSS</span>）不是在<span>Ajax</span>中的一个新的脆弱点，它只是在<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>中更常见，尤其当应用允许使用<span style="color: #ff0000;">规定</span>（<span>state</span>）数据时。</span></p>
<p><span>跨站点请求伪造物也不是在<span>Ajax</span>中的新现象，但是如果应用开发者们不适当地检查在<span>Ajax</span>应用中的<span>HTTP </span><span style="color: #ff0000;">引用</span>（原文如此）头和管理<span>session</span>，将是为伪造物们开了门，尽管可能现在更糟糕了。</span></p>
<p><span>黑客，像开发者们一样，现在更感兴趣于使用和滥用增加了潜在漏洞的<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>。网络专家们应该确定开发者们意识到了即使客户端代码在适当的位置混乱也可能被利用，所以不管是不是<span>Ajax</span>数据输入始终都要被过滤和杀毒。</span></p>
<p><strong><span>10)</span>遵守相同的起始地址做为保护</strong></p>
<p><span>在安全的积极方面，<span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span>的<span>SOP</span>（同一起始地址策略）被完全地强迫应用在基于<span>XMLHttpRequest</span>的<span>Ajax</span>应用中。这个策略确保了脚本不能跟自己发行的以外的域进行通话。从开发者的观点，这也是让人非常烦恼的，因为这意味着来自<span>ajaxref.com</span>的网页服务不能跟来自<span>www.ajaxref.com</span>的<span>URL</span>进行通话，尽管这是同一台服务器上的，但它们不是同一个域。<span>DNS</span>匹配跟这个没关系，这是用于<span>SOP</span>的字符串检查。</span></p>
<p><span><span>SOP</span>也会严重的束缚开发者在客户端努力进行网络服务的能力。显然，最好的方法是在服务器端使用代理来响应发送给其他服务器的请求并将这些结果组合起来。但是许多<span>Ajax</span>开发者们试图打破这个同一起始地址的限制。使用<span>&lt;script&gt;</span>标签来代替<span>XMLHttpRequest</span>对象作为传输引入了危险的信任假设，而且导致了关注整个<span>Ajax</span>安全的开始。</span></p>
<p><span>现在，随着像<span>FireFox3</span>和<span>IE8</span>这样使用自己的跨域请求工具的浏览器的出现，更多的麻烦肯定即将来临。像<span>Java</span>的安全砂箱概念的情况似的，<span>SOP</span>限制被引进只是避免开发者们破坏安全。绕过这些安全措施要极为谨慎。</span></p>
<p><strong>注意你想要的是什么</strong></p>
<p><span>通过</span><span>Ajax</span><span>，丰富的应用界面工具集将赢得一个项目，但是坏的配管系统可能会搞垮它。如果一个丰富的</span><span>Ajax</span><span>应用的约定在偶尔很脆弱的网络环境中传输，那么用户会对察觉到应用的不稳定感到很失望，尽管它有华而不实的界面。为了实现桌面式的品质，网络专家们必须关于特定的网络和安全原理对</span><span>Ajax</span><span>开发者们进行培训，并且提供一个固定且连续的监控传输平台，这个平台包含</span><span><a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a></span><span>机能和来自用户感觉的网络性能的客户端检测。用户们看到的丰富的网络应用通常使用正常——例如像那些来自</span><span><a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a></span><span>的网络应用，如果不这样将是冒险的努力。</span></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/06/21/1854/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/06/21/1854/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/06/21/1854/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/06/21/1854/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/06/21/1854/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/assemble/" title="Assemble" rel="tag nofollow">Assemble</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/marrow/" title="Marrow" rel="tag nofollow">Marrow</a>, <a href="http://www.iwanna.cn/tags/xmlhttp/" title="XMLHTTP" rel="tag nofollow">XMLHTTP</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/01/917/" title="JavaScript大牛：Douglas Crockford(文章集合) (2009年05月1日)">JavaScript大牛：Douglas Crockford(文章集合)</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/08/246/" title="40 个轻量级 JavaScript 库 (2009年04月8日)">40 个轻量级 JavaScript 库</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/20/713/" title="24 个漂亮的个性化 HTML 表单技术 (2009年04月20日)">24 个漂亮的个性化 HTML 表单技术</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/21/764/" title="2008年国外最佳Web设计/开发技巧、脚本及资源总结 (2009年04月21日)">2008年国外最佳Web设计/开发技巧、脚本及资源总结</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/03/166/" title="13个效果超酷的Javascript网页导航菜单 (2009年04月3日)">13个效果超酷的Javascript网页导航菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/30/903/" title="设计完美商标图案的45条原则 (2009年04月30日)">设计完美商标图案的45条原则</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/30/915/" title="解密CSS Sprites：技巧、工具和教程 (2009年04月30日)">解密CSS Sprites：技巧、工具和教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/16/411/" title="程序员的八种境界 (2009年04月16日)">程序员的八种境界</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/24/824/" title="白色在网页设计中的使用：贴士和趋势 (2009年04月24日)">白色在网页设计中的使用：贴士和趋势</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/06/21/1854/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>简单的Ajax实例</title>
		<link>http://www.iwanna.cn/archives/2009/06/03/1678/</link>
		<comments>http://www.iwanna.cn/archives/2009/06/03/1678/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 01:51:10 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1678</guid>
		<description><![CDATA[Ajax 是一种可以通过Javascript, DHTML and the XMLHttpRequest 来发送GET或POST请求，在数据返回时不必重新载入页面。	 下面是一个非常简单的Ajax例子，发送一个请求，打印出请求的字符串和远程用户的IP地址。

简单的Ajax演示 (请参考原文演示: http://www.degraeve.com/reference/simple-ajax-example.php)
Html 页面
这个HTML页面提供了3个JavaScript函数，通过执行XMLHttpRequest来更新HTML页面.(AJAX调用)
&#60;html&#62;
&#60;head&#62;
&#60;title&#62;Simple Ajax Example&#60;/title&#62;
&#60;script language="Javascript"&#62;
function xmlhttpPost(strURL) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    [...]]]></description>
			<content:encoded><![CDATA[<p>Ajax 是一种可以通过<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>, DHTML and the XMLHttpRequest 来发送GET或POST请求，在数据返回时不必重新载入页面。	 下面是一个非常简单的Ajax例子，发送一个请求，打印出请求的字符串和远程用户的IP地址。<br />
<span id="more-1678"></span><br />
<span style="font-size: medium;"><strong>简单的Ajax演示 </strong></span>(请参考原文演示: <a href="http://www.degraeve.com/reference/simple-ajax-example.php">http://www.degraeve.com/reference/simple-ajax-example.php</a>)</p>
<h2><span style="font-size: medium;">Html 页面</span></h2>
<p>这个HTML页面提供了3个<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>函数，通过执行XMLHttpRequest来更新HTML页面.(AJAX调用)</p>
<pre class="sample" style="padding-left: 30px;">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Simple Ajax Example&lt;/title&gt;
&lt;script language="<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>"&gt;
function xmlhttpPost(strURL) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type',
    'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText);
        }
    }
    self.xmlHttpReq.send(getquerystring());
}

function getquerystring() {
    var form     = document.forms['f1'];
    var word = form.word.value;
    qstr = 'w=' + escape(word);  // NOTE: no '?' before querystring
    return qstr;
}

function updatepage(str){
    document.getElementById("result").innerHTML = str;
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form name="f1"&gt;
  &lt;p&gt;word: &lt;input name="word" type="text"&gt;
  &lt;input value="Go" type="button"
  onclick='<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>:xmlhttpPost("/cgi-bin/simple-ajax-example.cgi")'&gt;&lt;/p&gt;
  &lt;div id="result"&gt;&lt;/div&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h2>CGI 脚本</h2>
<p>这个CGI脚本是用来应答HTML页面的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>的请求。 CGI脚本可以通过简单的Python, Puby, PHP, C, Perl 等来实现。<br />
#!/usr/bin/perl -w<br />
use CGI;</p>
<p>$query = new CGI;</p>
<p>$secretword = $query-&gt;param(&#8216;w&#8217;);<br />
$remotehost = $query-&gt;remote_host();</p>
<p>print $query-&gt;header;<br />
print &#8220;&lt;p&gt;The secret word is &lt;b&gt;$secretword&lt;/b&gt; and your IP is &lt;b&gt;$remotehost&lt;/b&gt;</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/06/03/1678/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/06/03/1678/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/06/03/1678/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/06/03/1678/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/06/03/1678/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1206/" title="Google AJAX Libraries API (2009年05月27日)">Google AJAX Libraries API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/302/" title="Ajax之XMLHTTP学习理解 (2009年04月9日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/316/" title="ajax与json配合使用最简单实现 (2009年04月9日)">ajax与json配合使用最简单实现</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/06/03/1678/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google AJAX Libraries API</title>
		<link>http://www.iwanna.cn/archives/2009/05/27/1206/</link>
		<comments>http://www.iwanna.cn/archives/2009/05/27/1206/#comments</comments>
		<pubDate>Wed, 27 May 2009 09:17:59 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Extjs]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[YUI]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Library]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1206</guid>
		<description><![CDATA[
什么是 AJAX 库 API？
AJAX 库 API 是一种内容分布网络，可加载最受欢迎的开源 JavaScript 库的架构。通过使用 Google AJAX API 加载程序的 google.load() 方法，您的应用程序能够迅速从全球任何位置访问不断增长的、最受欢迎的 JavaScript 开源库列表，包括：

jQuery
jQuery UI
Prototype
script.aculo.us
MooTools
Dojo
SWFObject
Yahoo! User Interface Library (YUI)

Google 就每个库的利益直接与关键相关人员配合，并在最新稳定版本发布时接受这些版本。一旦我们托管给定库的版本，我们承诺无限期地托管该版本。
AJAX 库 API 在使用库集合的同时消除了用 JavaScript 开发混搭的不便之处。我们消除了托管库的不便之处、正确地设置缓存标头、与最新错误修正日期保持一致等。
&#60;script src="http://www.google.com/jsapi"&#62;&#60;/script&#62;
&#60;script&#62;
  // Load jQuery
  google.load("jquery", "1");

  // on page load complete, fire off a jQuery json-p query
  // against Google web search
  [...]]]></description>
			<content:encoded><![CDATA[<div class="g-c-gc-home">
<h2>什么是 AJAX 库 API？</h2>
<p>AJAX 库 API 是一种内容分布网络，可加载最受欢迎的开源 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> 库的架构。通过使用 <a href="http://code.google.com/apis/ajax/documentation/">Google AJAX API 加载程序的</a> <code><a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a>.load()</code> 方法，您的应用程序能够迅速从全球任何位置访问不断增长的、最受欢迎的 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> 开源库列表，包括：</p>
<ul>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#jquery">jQuery</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#jqueryUI">jQuery UI</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#prototype">Prototype</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#script_aculo_us">script.aculo.us</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#mootools">MooTools</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#dojo">Dojo</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#swfobject">SWFObject</a></li>
<li><a href="http://code.google.com/intl/zh-CN/apis/ajaxlibs/documentation/index.html#yui">Yahoo! User Interface Library (YUI)</a></li>
</ul>
<p><span id="more-1206"></span><a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a> 就每个库的利益直接与关键相关人员配合，并在最新稳定版本发布时接受这些版本。一旦我们托管给定库的版本，我们承诺无限期地托管该版本。</p>
<p>AJAX 库 API 在使用库集合的同时消除了用 <a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a> 开发混搭的不便之处。我们消除了托管库的不便之处、正确地设置缓存标头、与最新错误修正日期保持一致等。</p>
<pre class="prettyprint">&lt;script src="http://www.<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a>.com/jsapi"&gt;&lt;/script&gt;
&lt;script&gt;
  // Load <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>
  <a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a>.load("<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>", "1");

  // on page load complete, fire off a <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a> <a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>-p query
  // against <a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a> web search
  <a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a>.setOnLoadCallback(function() {
    $.getJSON("http://ajax.googleapis.com/ajax/services/search/web?q=<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a>&amp;v=1.0&amp;callback=?",

      // on search completion, process the results
      function (data) {
        if (data.responseData.results &amp;&amp;
            data.responseData.results.length &gt; 0) {
          var results = data.responseData.results;

          for (var i=0; i &lt; results.length; i++) {
            // Display each result however you wish
            alert(results[i].titleNoFormatting);
          }
        }

      });
    });
&lt;/script&gt;</pre>
</div>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/05/27/1206/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/05/27/1206/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/05/27/1206/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/05/27/1206/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/05/27/1206/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/api/" title="API" rel="tag nofollow">API</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/extjs-javascript-ui/" title="Extjs" rel="tag nofollow">Extjs</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/library/" title="Library" rel="tag nofollow">Library</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/prototype/" title="Prototype" rel="tag nofollow">Prototype</a>, <a href="http://www.iwanna.cn/topics/develope/widget/" title="Widget" rel="tag nofollow">Widget</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/yui/" title="YUI" rel="tag nofollow">YUI</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/21/752/" title="WordPress插件API手册 (2009年04月21日)">WordPress插件API手册</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/302/" title="Ajax之XMLHTTP学习理解 (2009年04月9日)">Ajax之XMLHTTP学习理解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/05/27/1206/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery与Extjs的Ajax的跨域访问</title>
		<link>http://www.iwanna.cn/archives/2009/05/20/1107/</link>
		<comments>http://www.iwanna.cn/archives/2009/05/20/1107/#comments</comments>
		<pubDate>Wed, 20 May 2009 04:37:38 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Extjs]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[ExtJS]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=1107</guid>
		<description><![CDATA[jquery的代码:



Js代码 


&#60;script&#62; 
 $(function() { 
 //      $.getJSON(&#8220;http://10.128.3.104/edi/rest/GetBillCaseInfo?_out=json&#38;_callback=?&#8221;, function(json) { 
 //        alert(json.ROWSET.ROW[0].CaseName); 
 //      }); 
 
 $.ajax({ 
 async:false, 
 //url: &#8217;http://10.128.3.104/edi/rest/GetBillCaseInfo&#8217;, //跨域的dns/document!searchJSONResult.action, 
 url: &#8216;testjson.do&#8217;, 
 type: &#8220;GET&#8221;, 
 dataType: &#8216;jsonp&#8217;, 
 jsonp: &#8216;_callback&#8217;, 
 data: &#8216;_out=json&#8217;, 
 timeout: 5000, 
 header: { &#8216;Authorization&#8217;: &#8216;Basic YWRtaW46YWRtaW4xMjM=&#8217;}, 
 beforeSend: function(request) { 
 //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了 
 }, 
 success: function (json) { //客户端jquery预先定义好的callback函数,成功获取跨域服务器上的json数据后,会动态执行这个callback函数 
 alert($.toJSON(json)); 
 alert($.toJSON(json.ROWSET.ROW[0])); 
 }, 
 error: function(request) { 
 //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了 
 //请求出错处理 
 [...]]]></description>
			<content:encoded><![CDATA[<p><span style="background-color: #ff0000;"><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>的代码:</span><br />
<span id="more-1107"></span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <object width="14" height="15" data="http://wjw465150.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%20%20%3Cscript%3E%0A%20%20%20%20%24(function()%20%7B%0A%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%24.getJSON(%22http%3A%2F%2F10.128.3.104%2Fedi%2Frest%2FGetBillCaseInfo%3F_out%3Djson%26_callback%3D%3F%22%2C%20function(json)%20%7B%0A%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%20%20alert(json.ROWSET.ROW%5B0%5D.CaseName)%3B%0A%20%20%20%20%20%20%2F%2F%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%24.ajax(%7B%0A%20%20%20%20%20%20%20%20async%3Afalse%2C%0A%20%20%20%20%20%20%20%20%2F%2Furl%3A%20'http%3A%2F%2F10.128.3.104%2Fedi%2Frest%2FGetBillCaseInfo'%2C%20%2F%2F%E8%B7%A8%E5%9F%9F%E7%9A%84dns%2Fdocument!searchJSONResult.action%2C%0A%20%20%20%20%20%20%20%20url%3A%20'testjson.do'%2C%0A%20%20%20%20%20%20%20%20type%3A%20%22GET%22%2C%0A%20%20%20%20%20%20%20%20dataType%3A%20'jsonp'%2C%0A%20%20%20%20%20%20%20%20jsonp%3A%20'_callback'%2C%0A%20%20%20%20%20%20%20%20data%3A%20'_out%3Djson'%2C%0A%20%20%20%20%20%20%20%20timeout%3A%205000%2C%0A%20%20%20%20%20%20%20%20header%3A%20%7B%20'Authorization'%3A%20'Basic%20YWRtaW46YWRtaW4xMjM%3D'%7D%2C%0A%20%20%20%20%20%20%20%20beforeSend%3A%20function(request)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2Fjsonp%20%E6%96%B9%E5%BC%8F%E6%AD%A4%E6%96%B9%E6%B3%95%E4%B8%8D%E8%A2%AB%E8%A7%A6%E5%8F%91.%E5%8E%9F%E5%9B%A0%E5%8F%AF%E8%83%BD%E6%98%AFdataType%E5%A6%82%E6%9E%9C%E6%8C%87%E5%AE%9A%E4%B8%BAjsonp%E7%9A%84%E8%AF%9D%2C%E5%B0%B1%E5%B7%B2%E7%BB%8F%E4%B8%8D%E6%98%AFajax%E4%BA%8B%E4%BB%B6%E4%BA%86%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20success%3A%20function%20(json)%20%7B%20%20%2F%2F%E5%AE%A2%E6%88%B7%E7%AB%AFjquery%E9%A2%84%E5%85%88%E5%AE%9A%E4%B9%89%E5%A5%BD%E7%9A%84callback%E5%87%BD%E6%95%B0%2C%E6%88%90%E5%8A%9F%E8%8E%B7%E5%8F%96%E8%B7%A8%E5%9F%9F%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84json%E6%95%B0%E6%8D%AE%E5%90%8E%2C%E4%BC%9A%E5%8A%A8%E6%80%81%E6%89%A7%E8%A1%8C%E8%BF%99%E4%B8%AAcallback%E5%87%BD%E6%95%B0%0A%20%20%20%20%20%20%20%20%20%20alert(%24.toJSON(json))%3B%0A%20%20%20%20%20%20%20%20%20%20alert(%24.toJSON(json.ROWSET.ROW%5B0%5D))%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20error%3A%20function(request)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%2F%2Fjsonp%20%E6%96%B9%E5%BC%8F%E6%AD%A4%E6%96%B9%E6%B3%95%E4%B8%8D%E8%A2%AB%E8%A7%A6%E5%8F%91.%E5%8E%9F%E5%9B%A0%E5%8F%AF%E8%83%BD%E6%98%AFdataType%E5%A6%82%E6%9E%9C%E6%8C%87%E5%AE%9A%E4%B8%BAjsonp%E7%9A%84%E8%AF%9D%2C%E5%B0%B1%E5%B7%B2%E7%BB%8F%E4%B8%8D%E6%98%AFajax%E4%BA%8B%E4%BB%B6%E4%BA%86%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%E8%AF%B7%E6%B1%82%E5%87%BA%E9%94%99%E5%A4%84%E7%90%86%0A%20%20%20%20%20%20%20%20%20%20alert(%22%E8%AF%B7%E6%B1%82%E5%87%BA%E9%94%99(%E8%AF%B7%E6%A3%80%E6%9F%A5%E7%9B%B8%E5%85%B3%E5%BA%A6%E7%BD%91%E7%BB%9C%E7%8A%B6%E5%86%B5.)%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%7D)%3B%0A%20%20%3C%2Fscript%3E%0A%0A" /><param name="src" value="http://wjw465150.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-c">
<li><span><span>&lt;script&gt; </span></span></li>
<li><span> $(<span class="keyword">function</span><span>() { </span></span></li>
<li><span> <span class="comment">//      $.getJSON(&#8220;http://10.128.3.104/edi/rest/GetBillCaseInfo?_out=<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>&amp;_callback=?&#8221;, function(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>) {</span><span> </span></span></li>
<li><span> <span class="comment">//        alert(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>.ROWSET.ROW[0].CaseName);</span><span> </span></span></li>
<li><span> <span class="comment">//      });</span><span> </span></span></li>
<li><span> </span></li>
<li><span> $.ajax({ </span></li>
<li><span> async:<span class="keyword">false</span><span>, </span></span></li>
<li><span> <span class="comment">//url: &#8217;http://10.128.3.104/edi/rest/GetBillCaseInfo&#8217;, //跨域的dns/document!searchJSONResult.action,</span><span> </span></span></li>
<li><span> url: <span class="string">&#8216;testjson.do&#8217;</span><span>, </span></span></li>
<li><span> type: <span class="string">&#8220;GET&#8221;</span><span>, </span></span></li>
<li><span> dataType: <span class="string">&#8216;jsonp&#8217;</span><span>, </span></span></li>
<li><span> jsonp: <span class="string">&#8216;_callback&#8217;</span><span>, </span></span></li>
<li><span> data: <span class="string">&#8216;_out=<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>&#8217;</span><span>, </span></span></li>
<li><span> timeout: 5000, </span></li>
<li><span> header: { <span class="string">&#8216;Authorization&#8217;</span><span>: </span><span class="string">&#8216;Basic YWRtaW46YWRtaW4xMjM=&#8217;</span><span>}, </span></span></li>
<li><span> beforeSend: <span class="keyword">function</span><span>(request) { </span></span></li>
<li><span> <span class="comment">//jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了</span><span> </span></span></li>
<li><span> }, </span></li>
<li><span> success: <span class="keyword">function</span><span> (<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>) { </span><span class="comment">//客户端<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>预先定义好的callback函数,成功获取跨域服务器上的<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>数据后,会动态执行这个callback函数</span><span> </span></span></li>
<li><span> alert($.toJSON(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>)); </span></li>
<li><span> alert($.toJSON(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>.ROWSET.ROW[0])); </span></li>
<li><span> }, </span></li>
<li><span> error: <span class="keyword">function</span><span>(request) { </span></span></li>
<li><span> <span class="comment">//jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了</span><span> </span></span></li>
<li><span> <span class="comment">//请求出错处理</span><span> </span></span></li>
<li><span> alert(<span class="string">&#8220;请求出错(请检查相关度网络状况.)&#8221;</span><span>); </span></span></li>
<li><span> } </span></li>
<li><span> }); </span></li>
<li><span> </span></li>
<li><span> }); </span></li>
<li><span>&lt;/script&gt; </span></li>
</ol>
</div>
<pre class="js" style="display: none;">  &lt;script&gt;
    $(function() {
      //      $.getJSON("http://10.128.3.104/edi/rest/GetBillCaseInfo?_out=<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>&amp;_callback=?", function(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>) {
      //        alert(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>.ROWSET.ROW[0].CaseName);
      //      });

      $.ajax({
        async:false,
        //url: 'http://10.128.3.104/edi/rest/GetBillCaseInfo', //跨域的dns/document!searchJSONResult.action,
        url: 'testjson.do',
        type: "GET",
        dataType: 'jsonp',
        jsonp: '_callback',
        data: '_out=<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>',
        timeout: 5000,
        header: { 'Authorization': 'Basic YWRtaW46YWRtaW4xMjM='},
        beforeSend: function(request) {
          //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
        },
        success: function (<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>) {  //客户端<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>预先定义好的callback函数,成功获取跨域服务器上的<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>数据后,会动态执行这个callback函数
          alert($.toJSON(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>));
          alert($.toJSON(<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>.ROWSET.ROW[0]));
        },
        error: function(request) {
          //jsonp 方式此方法不被触发.原因可能是dataType如果指定为jsonp的话,就已经不是ajax事件了
          //请求出错处理
          alert("请求出错(请检查相关度网络状况.)");
        }
      });

    });
  &lt;/script&gt;</pre>
<p><span style="background-color: #ff0000;">Extjs的代码:</span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Js代码 <object width="14" height="15" data="http://wjw465150.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" type="application/x-shockwave-flash"><param name="flashvars" value="clipboard=%20%20%20%20%20%20ss%20%3D%20new%20Ext.data.ScriptTagProxy(%7B%0A%20%20%20%20%20%20%20%20%2F%2Furl%3A%20'http%3A%2F%2F10.128.3.104%2Fedi%2Frest%2FGetBillCaseInfo'%2C%0A%20%20%20%20%20%20%20%20url%3A%20'testjson.do'%2C%0A%20%20%20%20%20%20%20%20callbackParam%3A%20%22_callback%22%2C%0A%20%20%20%20%20%20%20%20headers%3A%20%7B%20'Authorization'%3A%20'Basic%20YWRtaW46YWRtaW4xMjM%3D'%7D%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20ss.load(%7B'_out'%3A%20'json'%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20new%20Ext.data.JsonReader(%7Broot%3A%22ROWSET.ROW%22%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5B%7Bname%3A%20'CaseCode'%2C%20mapping%3A%20'CaseCode'%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7Bname%3A%20'CaseName'%2C%20mapping%3A%20'CaseName'%7D%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20function(recordsBlock%2C%20arg%2C%20isok)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alert(Ext.encode(recordsBlock))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alert(Ext.encode(recordsBlock.records%5B0%5D.data))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%3B%0A%0A%20%20%20%20%20%20Ext.Ajax.request(%7B%0A%20%20%20%20%20%20%20%20url%3A%20'http%3A%2F%2F10.128.3.104%2Fedi%2Frest%2FGetBillCaseInfo'%2C%0A%20%20%20%20%20%20%20%20%2F%2Furl%3A%20'testjson.do'%2C%0A%20%20%20%20%20%20%20%20scriptTag%3A%20true%2C%0A%20%20%20%20%20%20%20%20success%3A%20function(req)%20%7B%0A%20%20%20%20%20%20%20%20%20%20alert(req.responseText)%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20failure%3A%20function(req)%20%7B%0A%20%20%20%20%20%20%20%20%20%20alert(req.responseText)%3B%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20headers%3A%20%7B%20'Authorization'%3A%20'Basic%20YWRtaW46YWRtaW4xMjM%3D'%7D%2C%0A%20%20%20%20%20%20%20%20params%3A%20%7B%20_out%3A%20'json'%20%7D%0A%20%20%20%20%20%20%7D)%3B%0A" /><param name="src" value="http://wjw465150.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" /><param name="quality" value="high" /></object></div>
</div>
<ol class="dp-c">
<li><span><span>ss = </span><span class="keyword">new</span><span> Ext.data.ScriptTagProxy({ </span></span></li>
<li><span> <span class="comment">//url: &#8217;http://10.128.3.104/edi/rest/GetBillCaseInfo&#8217;,</span><span> </span></span></li>
<li><span> url: <span class="string">&#8216;testjson.do&#8217;</span><span>, </span></span></li>
<li><span> callbackParam: <span class="string">&#8220;_callback&#8221;</span><span>, </span></span></li>
<li><span> headers: { <span class="string">&#8216;Authorization&#8217;</span><span>: </span><span class="string">&#8216;Basic YWRtaW46YWRtaW4xMjM=&#8217;</span><span>} </span></span></li>
<li><span>}); </span></li>
<li><span>ss.load({<span class="string">&#8216;_out&#8217;</span><span>: </span><span class="string">&#8216;<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>&#8217;</span><span>}, </span></span></li>
<li><span> <span class="keyword">new</span><span> Ext.data.JsonReader({root:</span><span class="string">&#8220;ROWSET.ROW&#8221;</span><span>}, </span></span></li>
<li><span> [{name: <span class="string">'CaseCode'</span><span>, mapping: </span><span class="string">'CaseCode'</span><span>}, </span></span></li>
<li><span> {name: <span class="string">'CaseName'</span><span>, mapping: </span><span class="string">'CaseName'</span><span>}]), </span></span></li>
<li><span> <span class="keyword">function</span><span>(recordsBlock, arg, isok) { </span></span></li>
<li><span> alert(Ext.encode(recordsBlock)); </span></li>
<li><span> alert(Ext.encode(recordsBlock.records[0].data)); </span></li>
<li><span> } </span></li>
<li><span> ); </span></li>
<li><span> </span></li>
<li><span>Ext.Ajax.request({ </span></li>
<li><span> url: <span class="string">&#8216;http://10.128.3.104/edi/rest/GetBillCaseInfo&#8217;</span><span>, </span></span></li>
<li><span> <span class="comment">//url: &#8217;testjson.do&#8217;,</span><span> </span></span></li>
<li><span> scriptTag: <span class="keyword">true</span><span>, </span></span></li>
<li><span> success: <span class="keyword">function</span><span>(req) { </span></span></li>
<li><span> alert(req.responseText); </span></li>
<li><span> }, </span></li>
<li><span> failure: <span class="keyword">function</span><span>(req) { </span></span></li>
<li><span> alert(req.responseText); </span></li>
<li><span> }, </span></li>
<li><span> headers: { <span class="string">&#8216;Authorization&#8217;</span><span>: </span><span class="string">&#8216;Basic YWRtaW46YWRtaW4xMjM=&#8217;</span><span>}, </span></span></li>
<li><span> params: { _out: <span class="string">&#8216;<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>&#8217;</span><span> } </span></span></li>
<li><span>}); </span></li>
</ol>
</div>
<pre class="js" style="display: none;">      ss = new Ext.data.ScriptTagProxy({
        //url: 'http://10.128.3.104/edi/rest/GetBillCaseInfo',
        url: 'testjson.do',
        callbackParam: "_callback",
        headers: { 'Authorization': 'Basic YWRtaW46YWRtaW4xMjM='}
      });
      ss.load({'_out': '<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>'},
              new Ext.data.JsonReader({root:"ROWSET.ROW"},
                      [{name: 'CaseCode', mapping: 'CaseCode'},
                        {name: 'CaseName', mapping: 'CaseName'}]),
              function(recordsBlock, arg, isok) {
                alert(Ext.encode(recordsBlock));
                alert(Ext.encode(recordsBlock.records[0].data));
              }
              );

      Ext.Ajax.request({
        url: 'http://10.128.3.104/edi/rest/GetBillCaseInfo',
        //url: 'testjson.do',
        scriptTag: true,
        success: function(req) {
          alert(req.responseText);
        },
        failure: function(req) {
          alert(req.responseText);
        },
        headers: { 'Authorization': 'Basic YWRtaW46YWRtaW4xMjM='},
        params: { _out: '<a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">json</a>' }
      });</pre>
<p><span style="background-color: #ff0000;">注意:无论是<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>还是Extjs都不能发送自定义HTTP的信息,因为他们都是通过动态生成&lt;scripe&gt;标签的方式来实现跨域的访问!</span></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/05/20/1107/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/05/20/1107/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/05/20/1107/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/05/20/1107/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/05/20/1107/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/extjs/" title="ExtJS" rel="tag nofollow">ExtJS</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/extjs-javascript-ui/" title="Extjs" rel="tag nofollow">Extjs</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/jquery/" title="JQuery" rel="tag nofollow">JQuery</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/07/3765/" title="简单的JQuery聚光灯效果教程 (2010年06月7日)">简单的JQuery聚光灯效果教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/17/1828/" title="用jQuery和CSS构建下拉菜单 (2009年06月17日)">用jQuery和CSS构建下拉菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4506/" title="推荐9个jquery手风琴菜单插件 (2010年07月13日)">推荐9个jquery手风琴菜单插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/11/4460/" title="推荐8个独特应用的JQuery拖放插件 (2010年07月11日)">推荐8个独特应用的JQuery拖放插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1864/" title="如何为您的博客图片添加水印效果？ (2009年06月23日)">如何为您的博客图片添加水印效果？</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/03/29/2605/" title="基于jQuery的新闻图片 (2010年03月29日)">基于jQuery的新闻图片</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/05/20/1107/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ajax与json配合使用最简单实现</title>
		<link>http://www.iwanna.cn/archives/2009/04/09/316/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/09/316/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 04:06:55 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Json]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=316</guid>
		<description><![CDATA[//ajax声明
var xmlHttp; function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);
} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
//javascript调用执行back()方法启动
ajax function back() {
var url=&#8221;/websys/main/actionurl.do?paraname=123&#8243;; createXMLHttpRequest(); xmlHttp.open(&#8220;GET&#8221;, url); xmlHttp.onreadystatechange =callback; xmlHttp.send(null);
}
//回掉函数 function callback(){
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
var resstr=xmlHttp.responseText;
var ress=eval(&#8220;(&#8220;+resstr+&#8221;)&#8221;);
if(ress.msg==false){
alert(ress.value);
}else{
alert(ress.value);
}
}
}
//后台action
public ActionForward execute(&#8230;&#8230;.)
throws IOException  {
String paravalue=rerquest.getParameter(&#8220;paraname&#8221;);
PrintWriter out=response.getWriter();
if(paravalue.equals(&#8220;123&#8243;))  {
out.print(&#8220;{msg:&#8217;success&#8217;,value:&#8217;oknow!&#8217;}&#8221;);
return null;
}  else  {
out.print(&#8220;{msg:error,value:&#8217;error!&#8217;}&#8221;);
}
return null;
}
return null;
}

© [...]]]></description>
			<content:encoded><![CDATA[<p>//ajax声明<br />
var xmlHttp; function createXMLHttpRequest() {<br />
if (window.ActiveXObject) {<br />
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
} else if (window.XMLHttpRequest) {<br />
xmlHttp = new XMLHttpRequest();<br />
}<br />
}<br />
//<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>调用执行back()方法启动<br />
ajax function back() {<br />
var url=&#8221;/websys/main/actionurl.do?paraname=123&#8243;; createXMLHttpRequest(); xmlHttp.open(&#8220;GET&#8221;, url); xmlHttp.onreadystatechange =callback; xmlHttp.send(null);<br />
}<br />
//回掉函数 function callback(){<br />
if (xmlHttp.readyState == 4) {<br />
if (xmlHttp.status == 200) {<br />
var resstr=xmlHttp.responseText;<br />
var ress=eval(&#8220;(&#8220;+resstr+&#8221;)&#8221;);<br />
if(ress.msg==false){<br />
alert(ress.value);<br />
}else{<br />
alert(ress.value);<br />
}<br />
}<br />
}<br />
//后台action<br />
public ActionForward execute(&#8230;&#8230;.)<br />
throws IOException  {<br />
String paravalue=rerquest.getParameter(&#8220;paraname&#8221;);<br />
PrintWriter out=response.getWriter();<br />
if(paravalue.equals(&#8220;123&#8243;))  {<br />
out.print(&#8220;{msg:&#8217;success&#8217;,value:&#8217;oknow!&#8217;}&#8221;);<br />
return null;<br />
}  else  {<br />
out.print(&#8220;{msg:error,value:&#8217;error!&#8217;}&#8221;);<br />
}<br />
return null;<br />
}<br />
return null;<br />
}</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/09/316/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/09/316/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/09/316/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/09/316/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/09/316/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/json/" title="Json" rel="tag nofollow">Json</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/24/826/" title="JSON 入门指南 (2009年04月24日)">JSON 入门指南</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1206/" title="Google AJAX Libraries API (2009年05月27日)">Google AJAX Libraries API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/09/316/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax之XMLHTTP学习理解</title>
		<link>http://www.iwanna.cn/archives/2009/04/09/302/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/09/302/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 03:04:55 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[XMLHTTP]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=302</guid>
		<description><![CDATA[在.JS文件或者网页中写入如下脚本
//定义XMLHttp实例
var xmlHttp;
function createXMLHttpRequest(){
//开始初始化XMLHttpRequest对象
if(window.ActiveXObject){
//IE浏览器
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);
}else if(window.XMLHttpRequest){
//Mozilla浏览器
xmlHttp = new XMLHttpRequest();
}
if(xmlHttp){
xmlHttp.open(&#8220;GET&#8221;,url,false);
xmlHttp.onreadystatechange=function(){setState(greens,reds,contains)};
xmlHttp.send(null);
}
}
//回调函数举例
//返回的4种状态
function setState(greens,reds,contains){
var contains = document.getElementById(&#8220;contain&#8221;);
if(xmlHttp.readyState == 0){
contains.innerHTML = &#8220;正在初始化&#8221;;
}
if(xmlHttp.readyState == 1){
contains.innerHTML = &#8220;正在准备发送请求&#8221;;
}
if(xmlHttp.readyState == 2){
contains.innerHTML = &#8220;正在发送请求&#8221;;
}
if(xmlHttp.readyState == 3){
contains.innerHTML = &#8220;正在接收数据&#8221;;
}
if(xmlHttp.readyState == 4){
//信息已经成功返回，开始处理信息
if(xmlHttp.status == 200){
contains.innerHTML = xmlHttp.responstText; //返回值
}
}
} 
DOM的一些详解
(1)设置
 在从服务器返回数据的同时，还要进行设置，使浏览器不会在本地缓存结果，response.setHeader(&#8220;Cache-Control&#8221;,&#8221;no-cache&#8221;);response.setHeader(&#8220;pragma&#8221;,&#8221;no-cache&#8221;);
XMLHttpRequest对象提供２个可以用来访问服务器响应的属性，一个是responseText将响应提供一个串，结合HTML元 素的innerHTML属性，非常有用． (document.getElementById(&#8220;results&#8221;).innerHTML=xmlHttp.responseText).一个是 responseXML将响应提供为一个XML对象．

(2)DOM元素的一些有用的属性
 childNodes&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素所有子元素的数组
firstChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素的第一个下级子元素
lastChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回当前元素的最后一个子元素
nextSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回紧跟在当前元素后面的元素
nodeValue&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-指定表示元素值的读／写属性
parentNode &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回元素的父节点
previousSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-返回紧邻当前元素之前的元素
(3)用于遍历XML文档的DOM元素方法(document)
 getElementById(id)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获取有指定唯一ID属性值文档中的元素
getElementsByTagName(name)&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素中有指定标记名的子元素的数组
hasChildNodes()&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回一个布尔值，指定元素是否有子元素
getAttribute(name)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回元素的属性值，属性由name指定
(4)动态创建内容时所用的W3C DOM属性和方法
 document.createElement(tagName)&#8212;&#8212;&#8212;-文档对象上的createElement方法可以创建由tagName指定的元素
document.createTextNode(text)&#8212;&#8212;&#8212;&#8212;&#8211;文档对象的createTextNode方法会创建一个包含静态文本的节点．
&#60;element&#62;&#60;/element&#62;.appendChild(childNode)&#8212;&#8212;&#8212;该方法将指定的节点增加到当前元素的子节点列表．
&#60;element&#62;&#60;/element&#62;.getAttribute(name)&#124;.setAttribute(name,value)&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获得和设置元素中name属性的值
&#60;element&#62;&#60;/element&#62;.insertBefore(newNode,targetNode)&#8212;&#8211;这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面。
&#60;element&#62;&#60;/element&#62;.removeAttribute(name)&#8212;&#8211;这个方法从元素中删除属性name
&#60;element&#62;&#60;/element&#62;.removeChild(childNode)&#8212;&#8211;这个方法从元素中删除子元素childNode
&#60;element&#62;&#60;/element&#62;.replaceChild(newNode,oldNode)&#8212;&#8211;这个方法将节点oldNode替换为节点newNode
&#60;element&#62;&#60;/element&#62;.hasChildNodes()这个方法返回一个布尔值，指示元素是否有子元素
XMLHttpRequest对象的一些典型方法
(1)、void open(String method,String [...]]]></description>
			<content:encoded><![CDATA[<p>在.JS文件或者网页中写入如下脚本</p>
<p><span><span><span><span>//</span><span>定义XMLHttp实例</span><br />
var xmlHttp;<br />
function createXMLHttpRequest(){<br />
<span>//</span><span>开始初始化XMLHttpRequest对象</span><br />
if(window.ActiveXObject){<br />
<span>//</span><span>IE浏览器</span><br />
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
}else if(window.XMLHttpRequest){<br />
<span>//</span><span>Mozilla浏览器</span><br />
xmlHttp = new XMLHttpRequest();<br />
}<br />
if(xmlHttp){<br />
xmlHttp.open(&#8220;GET&#8221;,url,false);<br />
xmlHttp.onreadystatechange=function(){setState(greens,reds,contains)};<br />
xmlHttp.send(null);<br />
}<br />
}<br />
</span></span><span style="background-color: #ffffff;"><span><span><span>//回调函数举例<br />
//返回的4种状态<br />
</span>function setState(greens,reds,contains){<br />
var contains = document.getElementById(&#8220;contain&#8221;);<br />
if(xmlHttp.readyState == 0){<br />
contains.innerHTML = &#8220;正在初始化&#8221;;<br />
}<br />
if(xmlHttp.readyState == 1){<br />
contains.innerHTML = &#8220;正在准备发送请求&#8221;;<br />
}<br />
if(xmlHttp.readyState == 2){<br />
contains.innerHTML = &#8220;正在发送请求&#8221;;<br />
}<br />
if(xmlHttp.readyState == 3){<br />
contains.innerHTML = &#8220;正在接收数据&#8221;;<br />
}<br />
if(xmlHttp.readyState == 4){<br />
<span>//</span><span>信息已经成功返回，开始处理信息</span><br />
if(xmlHttp.status == 200){<br />
contains.innerHTML = xmlHttp.responstText; <span>//返回值</span><br />
}<br />
}<br />
}</span></span></span></span><span style="background-color: #ffffff; color: #999999; "> </span></p>
<p><span>DOM的一些详解</span></p>
<p><span><span>(1)设置<br />
</span> </span><span><span style="color: #3366ff;">在从服务器返回数据的同时，还要进行设置，使浏览器不会在本地缓存结果，response.setHeader(&#8220;Cache-Control&#8221;,&#8221;no-cache&#8221;);response.setHeader(&#8220;pragma&#8221;,&#8221;no-cache&#8221;);<br />
XMLHttpRequest对象提供２个可以用来访问服务器响应的属性，一个是responseText将响应提供一个串，结合HTML元 素的innerHTML属性，非常有用． (document.getElementById(&#8220;results&#8221;).innerHTML=xmlHttp.responseText).一个是 responseXML将响应提供为一个XML对象．<br />
</span><br />
</span><span><span>(2)DOM元素的一些有用的属性<br />
</span> </span><span><span style="color: #3366ff;">childNodes&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素所有子元素的数组<br />
firstChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素的第一个下级子元素<br />
lastChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回当前元素的最后一个子元素<br />
nextSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回紧跟在当前元素后面的元素<br />
nodeValue&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-指定表示元素值的读／写属性<br />
parentNode &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回元素的父节点<br />
previousSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-返回紧邻当前元素之前的元素</span></span></p>
<p><span><span>(3)用于遍历XML文档的DOM元素方法(document)<br />
</span> </span><span><span style="color: #3366ff;">getElementById(id)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获取有指定唯一ID属性值文档中的元素<br />
getElementsByTagName(name)&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素中有指定标记名的子元素的数组<br />
hasChildNodes()&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回一个布尔值，指定元素是否有子元素<br />
getAttribute(name)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回元素的属性值，属性由name指定</span></span></p>
<p><span><span>(4)动态创建内容时所用的W3C DOM属性和方法<br />
</span> document.createElement(tagName)&#8212;&#8212;&#8212;-文档对象上的createElement方法可以创建由tagName指定的元素<br />
document.createTextNode(text)&#8212;&#8212;&#8212;&#8212;&#8211;文档对象的createTextNode方法会创建一个包含静态文本的节点．<br />
&lt;element&gt;&lt;/element&gt;.appendChild(childNode)&#8212;&#8212;&#8212;该方法将指定的节点增加到当前元素的子节点列表．<br />
&lt;element&gt;&lt;/element&gt;.getAttribute(name)|.setAttribute(name,value)&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获得和设置元素中name属性的值<br />
&lt;element&gt;&lt;/element&gt;.insertBefore(newNode,targetNode)&#8212;&#8211;这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面。<br />
&lt;element&gt;&lt;/element&gt;.removeAttribute(name)&#8212;&#8211;这个方法从元素中删除属性name<br />
&lt;element&gt;&lt;/element&gt;.removeChild(childNode)&#8212;&#8211;这个方法从元素中删除子元素childNode<br />
&lt;element&gt;&lt;/element&gt;.replaceChild(newNode,oldNode)&#8212;&#8211;这个方法将节点oldNode替换为节点newNode<br />
&lt;element&gt;&lt;/element&gt;.hasChildNodes()这个方法返回一个布尔值，指示元素是否有子元素</span></p>
<p><span><span>XMLHttpRequest对象的一些典型方法</span></span></p>
<p><span><span>(1)、void open(String method,String url,boolean asynch);这个方法会建立对服务器的调用。<br />
第一个参数表示要提供调用的特定方法(get,post,put)<br />
第二个参数表示要提供所调用资源的url<br />
第三个参数表示是异步(true)还是同步(false)<br />
(2)、void send(content):这个方法会向具体服务器发出请求。可选参数会作为请求体的一部分发送。<br />
(3)、void setRequestHeader(String header ,String value):这个方法为HTTP请求中一个给定的首部设置值<br />
第一个参数表示要设置的首部。<br />
第二个参数表示要 在首部中放置的值。这个方法必须在调用open()之后才能调用。<br />
XMLHttpRequest对象的一些典型属性：<br />
(1)、onreadystatechange:每个状态改变时都会触发这个事件处理器，通常会调用一个<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>函数，用来处理返回时要调用的函数。<br />
(2)、readyState:请求的状态。有5个值：0=未初始化，1=正在加载，2=已经加载，3=交互中，4=完成。<br />
(3)、responseText:服务器的响应，表示为一个串<br />
(4)、responseXML:服务器的响应，表示为一个XML，这个对象可以解析为一个DOM对象。<br />
(5)、status:服务器的Http状态码(200对应ok，404对应Not Found(未找到))</span></span></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/09/302/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/09/302/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/09/302/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/09/302/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/09/302/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/xmlhttp/" title="XMLHTTP" rel="tag nofollow">XMLHTTP</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/21/1854/" title="10个关于Ajax的IT人需要知道的事情 (2009年06月21日)">10个关于Ajax的IT人需要知道的事情</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1206/" title="Google AJAX Libraries API (2009年05月27日)">Google AJAX Libraries API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/09/302/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</title>
		<link>http://www.iwanna.cn/archives/2009/04/09/280/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/09/280/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 01:49:06 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[Mootools]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=280</guid>
		<description><![CDATA[AJAX是web20的基石，现在网上流行几种开源的AJAX框架，比如：jQuery,Mootools,Dojo,Ext JS等等，那么我们到底在什么情况下该使用那个框架？以下是一组摘抄的数据：
Ajaxian在2007年底对Ajax工具进行了调查，部分调查结果见下表（其中数字为调查者使用该工具的百分比，详细的请参见网页）：http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results



Prototype
jQuery
Ext
Script.aculo.us
Mootools
YUI
JSON
Dojo
Backbase


34.1%
29.3%
22.5%
22.3%
14.3%
13%
12.9%
11.8%
8.3%



其中Prototype使用率最高，很大程度上是因为它是最早成熟的框架，很多以前在项目中采用，所以现在一直在用
让我们来看看选择AJAX框架的基础：
你的项目需求（即你需要哪些特性，例如是否要求做出精美的界面、特效或其它功能）
是否支持A等级的浏览器（IE, Firefox等）?
文档的质量：是否完善（包含教程，API，代码示例等）
框架的可扩展性如何？为框架写插件容易吗？
你是否喜欢它的API的风格？
能大多程度上统一你的JavaScript代码的风格？
框架大小（太大的框架导致用户下载时间的延长）
框架是否强迫你改变写HTML的方式（Dojo就是这样）？
代码执行速度：性能如何？
代码是否为模块化（Mootools为高度模块化）？代码可重用性如何？
一、jQuery
主页：http://jquery.com/
设计思想
简洁的思想：几乎所有操作都是以选择DOM元素（有强大的Selector）开始，然后是对其的操作（Chaining等特性）。
优点
小，压缩后代码只有20多k（无压缩代码94k）。
Selector和DOM操作的方便：jQuery的Selector与mootools的Element.Selectors.js比较，CSS Selector, XPath Selector（1.2后已删除）
Chaining：总是返回一个jQuery对象，可以连续操作。
文档的完整，易用性（每个API都有完整的例子，这是其它框架现在不能比的），而且网上还有很多其它的文档，书籍。
应用的广泛，包括google code也使用了jQuery。
使用jQuery的站点：http://docs.jquery.com/Sites_Using_jQuery
核心的开发团队和核心人员：John Resig等。
简洁和简短的语法，容易记。
可扩展性：有大量用户开发的插件可供使用（http://jquery.com/plugins/）
jQuery UI（http://jquery.com/plugins/，基于jQuery，但和核心的jQuery是独立的），不断发展中。
友好和活跃的社区：google groups: http://docs.jquery.com/Discussion
事件处理有很多方便的方法，如click，而不是单一的addEvent之类的。
缺点
由于设计思想是追求高效和简洁，没有面向对象的扩展。设计思路和Mootools不一样。
CSS Selector的速度稍微有些慢（但是现在速度已经大幅提高）
Mootools
主页：http://mootools.net/
设计思想
面向对象的设计思想。
优点
模块化，各模块代码非常独立，最小的核心只有8k，最大的优点是可选择使用哪些模块，用的时候只导入使用的模块即可，完整的也不到180k（没有压缩），压缩后不到70k。
语法的简洁，直观。
特效（Effects）：这一点比jQuery稍强，现在也正在开发Mootools UI（这应该是Ajax框架开发的一个趋势）。
代码写的优美，易阅读和修改。
文档的完整（最新的1.2beta的文档比以前更详细）。
活跃的社区：官网(http://forum.mootools.net/)，还有一个IRC。
性能：见：http://mootools.net/slickspeed/
缺点
修改了低层的一些类：如Array, String等，这也是设计思想的不同。
在DOM和CSS Selector上不如jQuery强大。
Dojo
主页：http://dojotoolkit.org/
优点
背后强大的支持：IBM、Sun、BEA等，这是非常重要的优势。
功能的强大，Full Stack的框架，扩展了DHTML的能力，例如：
支持与浏览器Back/Forward按钮的集成。
Dojo Offline，一个跨平台的离线存储API。
Chart组件，可以方便地在浏览器端生成图表。
基于SVG/VML的矢量图形库。
Google Maps、Yahoo! Maps组件，方便开发Mashup应用。
Comet支持，通过通用的Buyeux协议。
强大的UI（Dijit）。
面向对象的设计，统一的命名空间，包管理机制（The Package System and Custom Builds）
可扩展性。
缺点
复杂，学习曲线陡。
文档的极端不全，这是一个很大的问题。
API很多不稳定，各版本间改动较大，现在还不是一个成熟的框架。
侵入性太大，页面中大量使用dojo的属性，例如&#60;button dojoType=&#8221;dijit.form.Button&#8221; id=&#8221;helloButton&#8221;&#62;，如果将来dojo升级或者换一个框架时，负担会很大。
性能问题，由于dojo加载采用了同步的机制，会暂时锁定浏览器，导致CPU使用率达到100%。另外，很多Widget的速度很慢。
Ext JS
主页：http://extjs.com/
设计思想
组件化，推进RIA（Rich Internet Application）的应用。
优点
强大的UI，而且性能不错，这是其最大的优点。
速度快，管是UI还是其它模块。
100%面向对象和组件化的思想，一致的语法，全局的命名空间。
文档的完整，规范，方便。
核心的开发团队，Jack Slocum等。
活跃的社区，迅速增加的用户量。
模块化实现，可扩展性强。
所有的组件（widgets）都可直接使用，而无需进行设置（当然，用户可以选择重新配置）。
缺点
稍复杂。
为重量级的框架（包含大量UI），体积大。如果导入ext-all.js，压缩后也有近500k。
注意：EXT的商业使用：如果只是把extjs包含在自己的项目中，而且这个项目不是卖给用户做二次开发的工具箱，或组件库，就可以遵守LGPL协议免费使用；否则要付费。
总结
轻量级选择
轻量级的选择：主要是mootools和 jquery，由于它们的设计思想的不同，jQuery是追求简洁和高效，Mootools除了追求这些目标以外，其核心在于面向对象，所以jQuery 适合于快速开发，Mootools适合于稍大型和复杂的项目，其中需要面向对象的支持；另外，在Ajax的支持上，jQuery稍强一些；在Comet的 支持上，jQuery有相关的插件，Mootools目前没有，但是Comet的核心在于服务器的支持，浏览器端的接口很简单，开发相关的插件很简单。
在面向对象的Javascript Library中，mootools逐渐战胜了prototype（体积大，面向对象的设计不合理等），也包括script.acul.ous（基于prototype，实际上就是prototype上的UI库）。
面向RIA的框架
考虑纯JavaScripty库，目前主要是Dojo和ExtJS（还有YUI）。Dojo更适合企业应用和产品开发的需要，因为 离线存储、 DataGrid、2D、3D图形、Chart、Comet等组件对于企业应用来说都是很重要的（当然这些组件还要等一段时间才能稳定下来）。例 如，BEA基于Mashup技术开发的产品中已经使用了Dojo。
ExtJS：美观和&#8221;易用&#8221;，并且足够强大。在对UI有比较大的需求时，是首选。

© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Ajax, Ajax, Dojo, ExtJS, JavaScript, JQuery, Mootools

	您可能会感兴趣的其他文章
	
	jQuery与Extjs的Ajax的跨域访问 
	jQuery vs MooTools [...]]]></description>
			<content:encoded><![CDATA[<p>AJAX是web20的基石，现在网上流行几种开源的AJAX框架，比如：<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>,<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a>,<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a>,Ext JS等等，那么我们到底在什么情况下该使用那个框架？以下是一组摘抄的数据：</p>
<p>Ajaxian在2007年底对Ajax工具进行了调查，部分调查结果见下表（其中数字为调查者使用该工具的百分比，详细的请参见网页）：<a href="http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results">http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results<span id="more-280"></span></a></p>
<table style="width: 403.75pt; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="538">
<tbody>
<tr>
<td style="border: 0.5pt solid black; padding: 0cm 5.4pt; width: 51.7pt; background-color: transparent;" width="69" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">Prototype</span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 45.1pt; background-color: transparent;" width="60" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;"><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a></span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 29.2pt; background-color: transparent;" width="39" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">Ext</span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 73.25pt; background-color: transparent;" width="98" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">Script.aculo.us</span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 54.25pt; background-color: transparent;" width="72" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;"><a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a></span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 29.5pt; background-color: transparent;" width="39" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">YUI</span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 35.9pt; background-color: transparent;" width="48" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;"><a href="http://www.iwanna.cn/tags/json/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Json">JSON</a></span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 33.8pt; background-color: transparent;" width="45" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;"><a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a></span></span></span></span></td>
<td style="border-color: black black black #ece9d8; border-top: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 51.05pt; background-color: transparent;" width="68" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">Backbase</span></span></span></span></td>
</tr>
<tr>
<td style="border-color: #ece9d8 black black; border-left: 0.5pt solid black; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 51.7pt; background-color: transparent;" width="69" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">34.1%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 45.1pt; background-color: transparent;" width="60" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">29.3%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 29.2pt; background-color: transparent;" width="39" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">22.5%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 73.25pt; background-color: transparent;" width="98" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">22.3%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 54.25pt; background-color: transparent;" width="72" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">14.3%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 29.5pt; background-color: transparent;" width="39" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">13%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 35.9pt; background-color: transparent;" width="48" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">12.9%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 33.8pt; background-color: transparent;" width="45" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">11.8%</span></span></span></span></td>
<td style="border-color: #ece9d8 black black #ece9d8; border-right: 0.5pt solid black; border-bottom: 0.5pt solid black; padding: 0cm 5.4pt; width: 51.05pt; background-color: transparent;" width="68" valign="top"><span><span style="font-size: small;"><span style="color: #000000;"><span style="font-family: Times New Roman;">8.3%</span></span></span></span></td>
</tr>
</tbody>
</table>
<p>其中Prototype使用率最高，很大程度上是因为它是最早成熟的框架，很多以前在项目中采用，所以现在一直在用</p>
<p>让我们来看看选择AJAX框架的基础：</p>
<p>你的项目需求（即你需要哪些特性，例如是否要求做出精美的界面、特效或其它功能）</p>
<p>是否支持A等级的浏览器（IE, Firefox等）?</p>
<p>文档的质量：是否完善（包含教程，API，代码示例等）</p>
<p>框架的可扩展性如何？为框架写插件容易吗？</p>
<p>你是否喜欢它的API的风格？</p>
<p>能大多程度上统一你的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>代码的风格？</p>
<p>框架大小（太大的框架导致用户下载时间的延长）</p>
<p>框架是否强迫你改变写HTML的方式（<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a>就是这样）？</p>
<p>代码执行速度：性能如何？</p>
<p>代码是否为模块化（<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a>为高度模块化）？代码可重用性如何？</p>
<h1><span style="font-size: 20px;">一、<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a></p>
<p>主页：</span><a href="http://jquery.com/"><span style="font-size: 20px;">http://jquery.com/</span></a></h1>
<p>设计思想</p>
<p>简洁的思想：几乎所有操作都是以选择DOM元素（有强大的Selector）开始，然后是对其的操作（Chaining等特性）。</p>
<p>优点</p>
<p>小，压缩后代码只有20多k（无压缩代码94k）。</p>
<p>Selector和DOM操作的方便：<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>的Selector与<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">mootools</a>的Element.Selectors.js比较，CSS Selector, XPath Selector（1.2后已删除）</p>
<p>Chaining：总是返回一个<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>对象，可以连续操作。</p>
<p>文档的完整，易用性（每个API都有完整的例子，这是其它框架现在不能比的），而且网上还有很多其它的文档，书籍。</p>
<p>应用的广泛，包括<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a> code也使用了<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>。</p>
<p>使用<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>的站点：<a href="http://docs.jquery.com/Sites_Using_jQuery">http://docs.jquery.com/Sites_Using_jQuery</a></p>
<p>核心的开发团队和核心人员：John Resig等。</p>
<p>简洁和简短的语法，容易记。</p>
<p>可扩展性：有大量用户开发的插件可供使用（<a href="http://jquery.com/plugins/">http://jquery.com/plugins/</a>）</p>
<p><a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a> UI（<a href="http://jquery.com/plugins/">http://jquery.com/plugins/</a>，基于<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>，但和核心的<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>是独立的），不断发展中。</p>
<p>友好和活跃的社区：<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">google</a> groups: <a href="http://docs.jquery.com/Discussion">http://docs.jquery.com/Discussion</a></p>
<p>事件处理有很多方便的方法，如click，而不是单一的addEvent之类的。</p>
<p>缺点</p>
<p>由于设计思想是追求高效和简洁，没有面向对象的扩展。设计思路和<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a>不一样。</p>
<p>CSS Selector的速度稍微有些慢（但是现在速度已经大幅提高）</p>
<h2><span style="font-size: 24px;"><a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a></p>
<p>主页：</span><a href="http://mootools.net/"><span style="font-size: 24px;">http://mootools.net/</span></a></h2>
<p>设计思想</p>
<p>面向对象的设计思想。</p>
<p>优点</p>
<p>模块化，各模块代码非常独立，最小的核心只有8k，最大的优点是可选择使用哪些模块，用的时候只导入使用的模块即可，完整的也不到180k（没有压缩），压缩后不到70k。</p>
<p>语法的简洁，直观。</p>
<p>特效（Effects）：这一点比<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>稍强，现在也正在开发<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a> UI（这应该是Ajax框架开发的一个趋势）。</p>
<p>代码写的优美，易阅读和修改。</p>
<p>文档的完整（最新的1.2beta的文档比以前更详细）。</p>
<p>活跃的社区：官网(<a href="http://forum.mootools.net/">http://forum.mootools.net/</a>)，还有一个IRC。</p>
<p>性能：见：<a href="http://mootools.net/slickspeed/">http://mootools.net/slickspeed/</a></p>
<p>缺点</p>
<p>修改了低层的一些类：如Array, String等，这也是设计思想的不同。</p>
<p>在DOM和CSS Selector上不如<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>强大。</p>
<p><span style="font-size: 24px;"><a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a></span></p>
<p>主页：<a href="http://dojotoolkit.org/"><span style="font-size: 24px;">http://dojotoolkit.org/</span></a></p>
<p>优点</p>
<p>背后强大的支持：IBM、Sun、BEA等，这是非常重要的优势。</p>
<p>功能的强大，Full Stack的框架，扩展了DHTML的能力，例如：</p>
<p>支持与浏览器Back/Forward按钮的集成。</p>
<p><a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a> Offline，一个跨平台的离线存储API。</p>
<p>Chart组件，可以方便地在浏览器端生成图表。</p>
<p>基于SVG/VML的矢量图形库。</p>
<p><a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a> Maps、Yahoo! Maps组件，方便开发Mashup应用。</p>
<p>Comet支持，通过通用的Buyeux协议。</p>
<p>强大的UI（Dijit）。</p>
<p>面向对象的设计，统一的命名空间，包管理机制（The Package System and Custom Builds）</p>
<p>可扩展性。</p>
<p>缺点</p>
<p>复杂，学习曲线陡。</p>
<p>文档的极端不全，这是一个很大的问题。</p>
<p>API很多不稳定，各版本间改动较大，现在还不是一个成熟的框架。</p>
<p>侵入性太大，页面中大量使用<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>的属性，例如&lt;button dojoType=&#8221;dijit.form.Button&#8221; id=&#8221;helloButton&#8221;&gt;，如果将来<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>升级或者换一个框架时，负担会很大。</p>
<p>性能问题，由于<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">dojo</a>加载采用了同步的机制，会暂时锁定浏览器，导致CPU使用率达到100%。另外，很多Widget的速度很慢。</p>
<p><span style="font-size: 24px;">Ext JS</p>
<p>主页：</span><a href="http://extjs.com/"><span style="font-size: 24px;">http://extjs.com/</span></a></p>
<p>设计思想</p>
<p>组件化，推进RIA（Rich Internet Application）的应用。</p>
<p>优点</p>
<p>强大的UI，而且性能不错，这是其最大的优点。</p>
<p>速度快，管是UI还是其它模块。</p>
<p>100%面向对象和组件化的思想，一致的语法，全局的命名空间。</p>
<p>文档的完整，规范，方便。</p>
<p>核心的开发团队，Jack Slocum等。</p>
<p>活跃的社区，迅速增加的用户量。</p>
<p>模块化实现，可扩展性强。</p>
<p>所有的组件（widgets）都可直接使用，而无需进行设置（当然，用户可以选择重新配置）。</p>
<p>缺点</p>
<p>稍复杂。</p>
<p>为重量级的框架（包含大量UI），体积大。如果导入ext-all.js，压缩后也有近500k。</p>
<p>注意：EXT的商业使用：如果只是把extjs包含在自己的项目中，而且这个项目不是卖给用户做二次开发的工具箱，或组件库，就可以遵守LGPL协议免费使用；否则要付费。</p>
<p>总结</p>
<p>轻量级选择</p>
<p>轻量级的选择：主要是<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">mootools</a>和 <a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jquery</a>，由于它们的设计思想的不同，<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>是追求简洁和高效，<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a>除了追求这些目标以外，其核心在于面向对象，所以<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a> 适合于快速开发，<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a>适合于稍大型和复杂的项目，其中需要面向对象的支持；另外，在Ajax的支持上，<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>稍强一些；在Comet的 支持上，<a href="http://www.iwanna.cn/tags/jquery/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JQuery">jQuery</a>有相关的插件，<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">Mootools</a>目前没有，但是Comet的核心在于服务器的支持，浏览器端的接口很简单，开发相关的插件很简单。</p>
<p>在面向对象的<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a> Library中，<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">mootools</a>逐渐战胜了prototype（体积大，面向对象的设计不合理等），也包括script.acul.ous（基于prototype，实际上就是prototype上的UI库）。</p>
<p>面向RIA的框架</p>
<p>考虑纯JavaScripty库，目前主要是<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a>和ExtJS（还有YUI）。<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a>更适合企业应用和产品开发的需要，因为 离线存储、 DataGrid、2D、3D图形、Chart、Comet等组件对于企业应用来说都是很重要的（当然这些组件还要等一段时间才能稳定下来）。例 如，BEA基于Mashup技术开发的产品中已经使用了<a href="http://www.iwanna.cn/tags/dojo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Dojo">Dojo</a>。</p>
<p>ExtJS：美观和&#8221;易用&#8221;，并且足够强大。在对UI有比较大的需求时，是首选。</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/09/280/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/09/280/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/09/280/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/09/280/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/09/280/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/dojo/" title="Dojo" rel="tag nofollow">Dojo</a>, <a href="http://www.iwanna.cn/tags/extjs/" title="ExtJS" rel="tag nofollow">ExtJS</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a>, <a href="http://www.iwanna.cn/tags/jquery/" title="JQuery" rel="tag nofollow">JQuery</a>, <a href="http://www.iwanna.cn/tags/mootools/" title="Mootools" rel="tag nofollow">Mootools</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/08/16/2153/" title="jQuery vs MooTools (2009年08月16日)">jQuery vs MooTools</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/30/1894/" title="40+ Web前端开发必备的备忘单[上] (2009年06月30日)">40+ Web前端开发必备的备忘单[上]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/07/3765/" title="简单的JQuery聚光灯效果教程 (2010年06月7日)">简单的JQuery聚光灯效果教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/17/1828/" title="用jQuery和CSS构建下拉菜单 (2009年06月17日)">用jQuery和CSS构建下拉菜单</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/13/4506/" title="推荐9个jquery手风琴菜单插件 (2010年07月13日)">推荐9个jquery手风琴菜单插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/11/4460/" title="推荐8个独特应用的JQuery拖放插件 (2010年07月11日)">推荐8个独特应用的JQuery拖放插件</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4797/" title="实用jquery代码片段集合[下] (2010年07月29日)">实用jquery代码片段集合[下]</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/29/4795/" title="实用jquery代码片段集合[上] (2010年07月29日)">实用jquery代码片段集合[上]</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/09/280/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6个你必须用到AJAX的地方与6个不必用到的地方</title>
		<link>http://www.iwanna.cn/archives/2009/04/07/218/</link>
		<comments>http://www.iwanna.cn/archives/2009/04/07/218/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 01:28:44 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=218</guid>
		<description><![CDATA[现在距离gmail改变大家对使用网页应用程序的方式,已经有一年多了。但是目前很多网页应用程序,并没有使用充满活力的Ajax的优势,来代替以前沉闷的html功能。
下面是当前网页应用程序应该出现的地方：
* 基于表单的交互

表单是很慢的，非常慢。尝试编辑位于del.icio.us上面的一个书签？点击编辑链接打开一个编辑书签的表单页面，然后编辑你的内容并点击提交按钮等待整个提交过程结束，最后返回上一页并向下滚动到你刚才编辑的书签那里查看内容是否已经正确更改。那AJAX呢？点击编辑链接马上开始更改标签内容，点击提交按钮开始异步传输标签编辑的内容并立即看到更改后的内容而无需重载整个页面。
* 深层树状导航
总而言之，带有深层树状导航的应用程序通常是一个噩梦。在大多数情况中简单平直的拓扑结构以及搜索/标记可以很好的工作。但是如果一个应用程序真正使用深层树状导航，使用JavaScript来管理拓扑ui(user interface用户接口)，则使用Ajax懒加载深层数据可以降低服务器的负载。举例来说，为了阅读一个只有一行的结果来加载整个一个新页面是非常耗时的。
* 实时用户对用户通讯
在一个允许用户创建实时讨论的信息公告系统中，迫使用户一次又一次的更新完页面看到答复是非常愚蠢的。回复应该是实时的，用户不应被迫总是去痴迷于刷新操作。即使是gmail这个已经对以前像hotmail/yahoo mail的收件箱刷新，刷新收件箱标记的操作有所改进，也并没有充分的使用Ajax的功能来提示有新邮件到达。
* 投票、是否选择、等级评价
如果Ajax提交过程没有一个协调的UI提示是非常糟糕的，通过使用Ajax来提交一个调查或是否选择可以减少提交过程等待的痛苦。通过减少点击的等待时间，Ajax应用程序变得越来越有交互性-如果要用40秒来提交一个投票，除非非常在意的话大多数人会选择放弃。如果只花1秒呢，非常大比例的人会乐于参加投票的。（我在Netflix versus有2008张电影投票在IMDb.com有210张电影投票）
* 过滤和复杂数据操作
应用一个过滤、按日期排序、按日期和姓名排序、打开或关闭过滤器等等。任何一种高交换型操作应该交给JavaScript来处理而不是通过向服务器来提交一系列的请求。在查找或者操作大量数据的时候带来的视图上的改变最多不会超过30秒，Ajax真的使这些操作加速了。
* 普通录入时的提示/自动补齐
一些软件/JavaScript是擅长于帮助用户完成键入相同的文字或可以预测的文字的工作的。在del.icio.us 和 Gmail 中该功能是非常有益的，可以用来快速增加标记/email等。
对于一个频繁使用的应用程序诸如网页邮件客户端或博客阅读器来说，用户有充足的时间来学习如何使用新的UI概念但是他们却无法接受一个非常缓慢的反应速度。这种应用为Ajax变的更加普及起到了一个完美的杠杆作用。随着用户使用频率的增加，更多的Ajax部件应该加强用户的使用体验。
但是对于网页应用程序来说，把每件事甚至任何事都用JavaScript来实现也是没有意义的。Ajax只是针对一些特定的环境才能带来显著的帮助。在Ajax出现之前网页应用程序已经可以工作的很好了并且目前在网页开发中Ajax还存在着许多的缺陷和缺点。就算不从服务器端取得一个异步的信息数据流一个平直的html网页日志也可以工作的很好。对于文档或文档之间的跳转来说，老旧的纯HTML仍然是最好的选择。简单或很少使用的应用程序就算不用JavaScript同样可以很好的工作。
下面是一些不应该用到Ajax的地方：
* 简单的表单
就算表单是Ajax技术的最大受益人，一个简单内容的表单，或提交订货单，或一次性的很少用到的表单都不应该使用以Ajax驱动的表单提交机制。总的来说，如果一个表单不是很长用，或已经工作的很好，那么就算使用Ajax也没有什么帮助。
* 搜索
实时搜索带来的痛苦要远大于他带来的帮助。这就是为什么Google Suggest还处于beta测试而并没有放在主页上的原因。在Start.com Live.com上搜索的时候你是不能使用返回按钮来查看上一次搜索或返回上一页的。或许还没有人来完成这项工作，但是完成这个工作应该是很困难的至少是不太明知的或者会因此带来更多的麻烦。（译注：现在已经有很多开源的框架可以实现历史记录功能）
* 基本导航
总的来说，使用Ajax为一个基础的网站/程序做导航是一个可怕的念头。谁会把用来使自己的程序变的更好的时间花在编写代码模仿浏览器的行为上面？在基础页面中导航的操作中JavaScript是没有用的。
* 替换大量的信息
Ajax可以不用整页刷新来动态更新页面中改变的一小部分。但是如果一页上的大部分内容都需要更新，那为什么不从服务器那里获得一个新页面呢？
* 显示操作
虽然看上去Ajax是一个纯UI技术，其实不是这样的。他实际上是一个数据同步、操作、传输的技术。要想得到一个稳定的干净的网页程序，不使用 Ajax/JavaScript来直接完成用户接口是明智的。JavaScript可以分散分布并简单的操作XHTML/HTML DOM，根据CSS规则来决定如何让UI显示数据。查看
这里（http://www.sourcelabs.com/blogs/ajb/2005/08/powering_javascript_ui_with_cs.html）
来查看如何使用CSS来替代JavaScript来控制数据的显示。
* 无用的网页小部件
滑块选择控件、拖拽控件、弹性控件（此处原文为bouncies，不知指为何物？）、鼠标样式、天气预报控件，这些小部件应该可以被更直接的控件代替或者为了整洁干脆整个去掉。为了选择一种颜色，也许滑块选择控件可以选择一个正确的阴影颜色，但是在一个商店中选择一个价格，使用滑块选择控件选到分这个单位对于用户来说有点过分

© 我想网 Akon 所有 , 2009. &#124;
永久链接 &#124;
没有评论 &#124;
提交到
Google Reader
鲜果
抓虾


	标签：Ajax, Ajax

	您可能会感兴趣的其他文章
	
	简单的Ajax实例 
	几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 
	使用框架建立富联网应用 
	XmlHttpRequest的串行异步 
	jQuery与Extjs的Ajax的跨域访问 
	Google AJAX Libraries API 
	Ajax跨域访问解决方案 
	AJAX是如何工作的: AJAX的10个实践运用 
	Ajax之XMLHTTP学习理解 
	Ajax之XMLHTTP学习理解 



Feed enhanced by Better Feed from  Ozh
]]></description>
			<content:encoded><![CDATA[<p>现在距离gmail改变大家对使用网页应用程序的方式,已经有一年多了。但是目前很多网页应用程序,并没有使用充满活力的Ajax的优势,来代替以前沉闷的html功能。</p>
<p>下面是当前网页应用程序应该出现的地方：</p>
<p>* 基于表单的交互<br />
<span id="more-218"></span><br />
表单是很慢的，非常慢。尝试编辑位于del.icio.us上面的一个书签？点击编辑链接打开一个编辑书签的表单页面，然后编辑你的内容并点击提交按钮等待整个提交过程结束，最后返回上一页并向下滚动到你刚才编辑的书签那里查看内容是否已经正确更改。那AJAX呢？点击编辑链接马上开始更改标签内容，点击提交按钮开始异步传输标签编辑的内容并立即看到更改后的内容而无需重载整个页面。</p>
<p>* 深层树状导航</p>
<p>总而言之，带有深层树状导航的应用程序通常是一个噩梦。在大多数情况中简单平直的拓扑结构以及搜索/标记可以很好的工作。但是如果一个应用程序真正使用深层树状导航，使用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>来管理拓扑ui(user interface用户接口)，则使用Ajax懒加载深层数据可以降低服务器的负载。举例来说，为了阅读一个只有一行的结果来加载整个一个新页面是非常耗时的。</p>
<p>* 实时用户对用户通讯</p>
<p>在一个允许用户创建实时讨论的信息公告系统中，迫使用户一次又一次的更新完页面看到答复是非常愚蠢的。回复应该是实时的，用户不应被迫总是去痴迷于刷新操作。即使是gmail这个已经对以前像hotmail/yahoo mail的收件箱刷新，刷新收件箱标记的操作有所改进，也并没有充分的使用Ajax的功能来提示有新邮件到达。</p>
<p>* 投票、是否选择、等级评价</p>
<p>如果Ajax提交过程没有一个协调的UI提示是非常糟糕的，通过使用Ajax来提交一个调查或是否选择可以减少提交过程等待的痛苦。通过减少点击的等待时间，Ajax应用程序变得越来越有交互性-如果要用40秒来提交一个投票，除非非常在意的话大多数人会选择放弃。如果只花1秒呢，非常大比例的人会乐于参加投票的。（我在Netflix versus有2008张电影投票在IMDb.com有210张电影投票）</p>
<p>* 过滤和复杂数据操作</p>
<p>应用一个过滤、按日期排序、按日期和姓名排序、打开或关闭过滤器等等。任何一种高交换型操作应该交给<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>来处理而不是通过向服务器来提交一系列的请求。在查找或者操作大量数据的时候带来的视图上的改变最多不会超过30秒，Ajax真的使这些操作加速了。</p>
<p>* 普通录入时的提示/自动补齐</p>
<p>一些软件/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>是擅长于帮助用户完成键入相同的文字或可以预测的文字的工作的。在del.icio.us 和 Gmail 中该功能是非常有益的，可以用来快速增加标记/email等。</p>
<p>对于一个频繁使用的应用程序诸如网页邮件客户端或博客阅读器来说，用户有充足的时间来学习如何使用新的UI概念但是他们却无法接受一个非常缓慢的反应速度。这种应用为Ajax变的更加普及起到了一个完美的杠杆作用。随着用户使用频率的增加，更多的Ajax部件应该加强用户的使用体验。</p>
<p>但是对于网页应用程序来说，把每件事甚至任何事都用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>来实现也是没有意义的。Ajax只是针对一些特定的环境才能带来显著的帮助。在Ajax出现之前网页应用程序已经可以工作的很好了并且目前在网页开发中Ajax还存在着许多的缺陷和缺点。就算不从服务器端取得一个异步的信息数据流一个平直的html网页日志也可以工作的很好。对于文档或文档之间的跳转来说，老旧的纯HTML仍然是最好的选择。简单或很少使用的应用程序就算不用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>同样可以很好的工作。</p>
<p>下面是一些不应该用到Ajax的地方：</p>
<p>* 简单的表单</p>
<p>就算表单是Ajax技术的最大受益人，一个简单内容的表单，或提交订货单，或一次性的很少用到的表单都不应该使用以Ajax驱动的表单提交机制。总的来说，如果一个表单不是很长用，或已经工作的很好，那么就算使用Ajax也没有什么帮助。</p>
<p>* 搜索</p>
<p>实时搜索带来的痛苦要远大于他带来的帮助。这就是为什么<a href="http://www.iwanna.cn/tags/google/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Google">Google</a> Suggest还处于beta测试而并没有放在主页上的原因。在Start.com Live.com上搜索的时候你是不能使用返回按钮来查看上一次搜索或返回上一页的。或许还没有人来完成这项工作，但是完成这个工作应该是很困难的至少是不太明知的或者会因此带来更多的麻烦。（译注：现在已经有很多开源的框架可以实现历史记录功能）</p>
<p>* 基本导航</p>
<p>总的来说，使用Ajax为一个基础的网站/程序做导航是一个可怕的念头。谁会把用来使自己的程序变的更好的时间花在编写代码模仿浏览器的行为上面？在基础页面中导航的操作中<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>是没有用的。</p>
<p>* 替换大量的信息</p>
<p>Ajax可以不用整页刷新来动态更新页面中改变的一小部分。但是如果一页上的大部分内容都需要更新，那为什么不从服务器那里获得一个新页面呢？</p>
<p>* 显示操作</p>
<p>虽然看上去Ajax是一个纯UI技术，其实不是这样的。他实际上是一个数据同步、操作、传输的技术。要想得到一个稳定的干净的网页程序，不使用 Ajax/<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>来直接完成用户接口是明智的。<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>可以分散分布并简单的操作XHTML/HTML DOM，根据CSS规则来决定如何让UI显示数据。查看</p>
<p>这里（http://www.sourcelabs.com/blogs/ajb/2005/08/powering_javascript_ui_with_cs.html）</p>
<p>来查看如何使用CSS来替代<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>来控制数据的显示。</p>
<p>* 无用的网页小部件</p>
<p>滑块选择控件、拖拽控件、弹性控件（此处原文为bouncies，不知指为何物？）、鼠标样式、天气预报控件，这些小部件应该可以被更直接的控件代替或者为了整洁干脆整个去掉。为了选择一种颜色，也许滑块选择控件可以选择一个正确的阴影颜色，但是在一个商店中选择一个价格，使用滑块选择控件选到分这个单位对于用户来说有点过分</p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/04/07/218/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/04/07/218/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/04/07/218/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/04/07/218/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/04/07/218/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1206/" title="Google AJAX Libraries API (2009年05月27日)">Google AJAX Libraries API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/63/" title="Ajax之XMLHTTP学习理解 (2009年03月31日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/302/" title="Ajax之XMLHTTP学习理解 (2009年04月9日)">Ajax之XMLHTTP学习理解</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/04/07/218/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax之XMLHTTP学习理解</title>
		<link>http://www.iwanna.cn/archives/2009/03/31/63/</link>
		<comments>http://www.iwanna.cn/archives/2009/03/31/63/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 14:41:29 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=63</guid>
		<description><![CDATA[在.JS文件或者网页中写入如下脚本
//定义XMLHttp实例
var xmlHttp;
function createXMLHttpRequest(){
//开始初始化XMLHttpRequest对象
if(window.ActiveXObject){
//IE浏览器
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);
}else if(window.XMLHttpRequest){
//Mozilla浏览器
xmlHttp = new XMLHttpRequest();
}
if(xmlHttp){
xmlHttp.open(&#8220;GET&#8221;,url,false);
xmlHttp.onreadystatechange=function(){setState(greens,reds,contains)};
xmlHttp.send(null);
}
}
//回调函数举例
//返回的4种状态
function setState(greens,reds,contains){
var contains = document.getElementById(&#8220;contain&#8221;);
if(xmlHttp.readyState == 0){
contains.innerHTML = &#8220;正在初始化&#8221;;
}
if(xmlHttp.readyState == 1){
contains.innerHTML = &#8220;正在准备发送请求&#8221;;
}
if(xmlHttp.readyState == 2){
contains.innerHTML = &#8220;正在发送请求&#8221;;
}
if(xmlHttp.readyState == 3){
contains.innerHTML = &#8220;正在接收数据&#8221;;
}
if(xmlHttp.readyState == 4){
//信息已经成功返回，开始处理信息
if(xmlHttp.status == 200){
contains.innerHTML = xmlHttp.responstText; //返回值
}
}
} 
DOM的一些详解
(1)设置
 在从服务器返回数据的同时，还要进行设置，使浏览器不会在本地缓存结果，response.setHeader(&#8220;Cache-Control&#8221;,&#8221;no-cache&#8221;);response.setHeader(&#8220;pragma&#8221;,&#8221;no-cache&#8221;);
XMLHttpRequest对象提供２个可以用来访问服务器响应的属性，一个是responseText将响应提供一个串，结合HTML元 素的innerHTML属性，非常有用． (document.getElementById(&#8220;results&#8221;).innerHTML=xmlHttp.responseText).一个是 responseXML将响应提供为一个XML对象．

(2)DOM元素的一些有用的属性
 childNodes&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素所有子元素的数组
firstChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素的第一个下级子元素
lastChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回当前元素的最后一个子元素
nextSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回紧跟在当前元素后面的元素
nodeValue&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-指定表示元素值的读／写属性
parentNode &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回元素的父节点
previousSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-返回紧邻当前元素之前的元素
 (3)用于遍历XML文档的DOM元素方法(document)
 getElementById(id)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获取有指定唯一ID属性值文档中的元素
getElementsByTagName(name)&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素中有指定标记名的子元素的数组
hasChildNodes()&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回一个布尔值，指定元素是否有子元素
getAttribute(name)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回元素的属性值，属性由name指定
 (4)动态创建内容时所用的W3C DOM属性和方法
 document.createElement(tagName)&#8212;&#8212;&#8212;-文档对象上的createElement方法可以创建由tagName指定的元素
document.createTextNode(text)&#8212;&#8212;&#8212;&#8212;&#8211;文档对象的createTextNode方法会创建一个包含静态文本的节点．
&#60;element&#62;&#60;/element&#62;.appendChild(childNode)&#8212;&#8212;&#8212;该方法将指定的节点增加到当前元素的子节点列表．
&#60;element&#62;&#60;/element&#62;.getAttribute(name)&#124;.setAttribute(name,value)&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获得和设置元素中name属性的值
&#60;element&#62;&#60;/element&#62;.insertBefore(newNode,targetNode)&#8212;&#8211;这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面。
&#60;element&#62;&#60;/element&#62;.removeAttribute(name)&#8212;&#8211;这个方法从元素中删除属性name
&#60;element&#62;&#60;/element&#62;.removeChild(childNode)&#8212;&#8211;这个方法从元素中删除子元素childNode
&#60;element&#62;&#60;/element&#62;.replaceChild(newNode,oldNode)&#8212;&#8211;这个方法将节点oldNode替换为节点newNode
&#60;element&#62;&#60;/element&#62;.hasChildNodes()这个方法返回一个布尔值，指示元素是否有子元素
XMLHttpRequest对象的一些典型方法
(1)、void open(String method,String url,boolean asynch);这个方法会建立对服务器的调用。
第一个参数表示要提供调用的特定方法(get,post,put)
第二个参数表示要提供所调用资源的url
第三个参数表示是异步(true)还是同步(false)
(2)、void send(content):这个方法会向具体服务器发出请求。可选参数会作为请求体的一部分发送。
(3)、void [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #800080;"><span style="color: #008000;"><span style="color: #000000; font-size: x-small;">在.JS文件或者网页中写入如下脚本</span></span></span></p>
<p><span style="color: #800080;"><span style="color: #999999;"><span style="font-size: x-small;"><span style="color: #008000;">//</span><span style="color: #008000;">定义XMLHttp实例</span><br />
var xmlHttp;<br />
function createXMLHttpRequest(){<br />
<span style="color: #008000;">//</span><span style="color: #008000;">开始初始化XMLHttpRequest对象</span><br />
if(window.ActiveXObject){<br />
<span style="color: #008000;">//</span><span style="color: #008000;">IE浏览器</span><br />
xmlHttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
}else if(window.XMLHttpRequest){<br />
<span style="color: #008000;">//</span><span style="color: #008000;">Mozilla浏览器</span><br />
xmlHttp = new XMLHttpRequest();<br />
}<br />
if(xmlHttp){<br />
xmlHttp.open(&#8220;GET&#8221;,url,false);<br />
xmlHttp.onreadystatechange=function(){setState(greens,reds,contains)};<br />
xmlHttp.send(null);<br />
}<br />
}<br />
</span></span><span style="background-color: #ffffff;"><span style="color: #999999;"><span style="font-size: x-small;"><span>//回调函数举例<br />
//返回的4种状态<br />
</span>function setState(greens,reds,contains){<br />
var contains = document.getElementById(&#8220;contain&#8221;);<br />
if(xmlHttp.readyState == 0){<br />
contains.innerHTML = &#8220;正在初始化&#8221;;<br />
}<br />
if(xmlHttp.readyState == 1){<br />
contains.innerHTML = &#8220;正在准备发送请求&#8221;;<br />
}<br />
if(xmlHttp.readyState == 2){<br />
contains.innerHTML = &#8220;正在发送请求&#8221;;<br />
}<br />
if(xmlHttp.readyState == 3){<br />
contains.innerHTML = &#8220;正在接收数据&#8221;;<br />
}<br />
if(xmlHttp.readyState == 4){<br />
<span style="color: #008000;">//</span><span style="color: #008000;">信息已经成功返回，开始处理信息</span><br />
if(xmlHttp.status == 200){<br />
contains.innerHTML = xmlHttp.responstText; <span style="color: #008000;">//返回值</span><br />
}<br />
}<br />
}</span></span></span></span><span style="background-color: #ffffff; color: #999999; font-size: x-small;"> </span></p>
<p><span style="color: #000000; font-size: x-small;">DOM的一些详解</span></p>
<p><span style="font-size: x-small;"><span style="color: #800080;">(1)设置<br />
</span> </span><span style="font-size: x-small;"><span style="color: #3366ff;">在从服务器返回数据的同时，还要进行设置，使浏览器不会在本地缓存结果，response.setHeader(&#8220;Cache-Control&#8221;,&#8221;no-cache&#8221;);response.setHeader(&#8220;pragma&#8221;,&#8221;no-cache&#8221;);<br />
XMLHttpRequest对象提供２个可以用来访问服务器响应的属性，一个是responseText将响应提供一个串，结合HTML元 素的innerHTML属性，非常有用． (document.getElementById(&#8220;results&#8221;).innerHTML=xmlHttp.responseText).一个是 responseXML将响应提供为一个XML对象．<br />
</span><br />
</span><span style="font-size: x-small;"><span style="color: #800080;">(2)DOM元素的一些有用的属性<br />
</span> </span><span style="font-size: x-small;"><span style="color: #3366ff;">childNodes&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素所有子元素的数组<br />
firstChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素的第一个下级子元素<br />
lastChild   &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回当前元素的最后一个子元素<br />
nextSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回紧跟在当前元素后面的元素<br />
nodeValue&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-指定表示元素值的读／写属性<br />
parentNode &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回元素的父节点<br />
previousSibling&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-返回紧邻当前元素之前的元素</p>
<p></span> </span><span style="font-size: x-small;"><span style="color: #800080;">(3)用于遍历XML文档的DOM元素方法(document)<br />
</span> </span><span style="font-size: x-small;"><span style="color: #3366ff;">getElementById(id)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获取有指定唯一ID属性值文档中的元素<br />
getElementsByTagName(name)&#8212;&#8212;&#8212;&#8212;&#8211;返回当前元素中有指定标记名的子元素的数组<br />
hasChildNodes()&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;返回一个布尔值，指定元素是否有子元素<br />
getAttribute(name)&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;返回元素的属性值，属性由name指定</p>
<p></span> </span><span style="font-size: x-small;"><span style="color: #800080;">(4)动态创建内容时所用的W3C DOM属性和方法<br />
</span> document.createElement(tagName)&#8212;&#8212;&#8212;-文档对象上的createElement方法可以创建由tagName指定的元素<br />
document.createTextNode(text)&#8212;&#8212;&#8212;&#8212;&#8211;文档对象的createTextNode方法会创建一个包含静态文本的节点．<br />
&lt;element&gt;&lt;/element&gt;.appendChild(childNode)&#8212;&#8212;&#8212;该方法将指定的节点增加到当前元素的子节点列表．<br />
&lt;element&gt;&lt;/element&gt;.getAttribute(name)|.setAttribute(name,value)&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;获得和设置元素中name属性的值<br />
&lt;element&gt;&lt;/element&gt;.insertBefore(newNode,targetNode)&#8212;&#8211;这个方法将节点newNode作为当前元素的子节点插到targetNode元素前面。<br />
&lt;element&gt;&lt;/element&gt;.removeAttribute(name)&#8212;&#8211;这个方法从元素中删除属性name<br />
&lt;element&gt;&lt;/element&gt;.removeChild(childNode)&#8212;&#8211;这个方法从元素中删除子元素childNode<br />
&lt;element&gt;&lt;/element&gt;.replaceChild(newNode,oldNode)&#8212;&#8211;这个方法将节点oldNode替换为节点newNode<br />
&lt;element&gt;&lt;/element&gt;.hasChildNodes()这个方法返回一个布尔值，指示元素是否有子元素</span></p>
<p><span style="color: #993300;"><span style="color: #000000; font-size: x-small;">XMLHttpRequest对象的一些典型方法</span></span></p>
<p><span style="color: #993300;"><span style="font-size: x-small;">(1)、void open(String method,String url,boolean asynch);这个方法会建立对服务器的调用。<br />
第一个参数表示要提供调用的特定方法(get,post,put)<br />
第二个参数表示要提供所调用资源的url<br />
第三个参数表示是异步(true)还是同步(false)<br />
(2)、void send(content):这个方法会向具体服务器发出请求。可选参数会作为请求体的一部分发送。<br />
(3)、void setRequestHeader(String header ,String value):这个方法为HTTP请求中一个给定的首部设置值<br />
第一个参数表示要设置的首部。<br />
第二个参数表示要 在首部中放置的值。这个方法必须在调用open()之后才能调用。<br />
XMLHttpRequest对象的一些典型属性：<br />
(1)、onreadystatechange:每个状态改变时都会触发这个事件处理器，通常会调用一个<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">javascript</a>函数，用来处理返回时要调用的函数。<br />
(2)、readyState:请求的状态。有5个值：0=未初始化，1=正在加载，2=已经加载，3=交互中，4=完成。<br />
(3)、responseText:服务器的响应，表示为一个串<br />
(4)、responseXML:服务器的响应，表示为一个XML，这个对象可以解析为一个DOM对象。<br />
(5)、status:服务器的Http状态码(200对应ok，404对应Not Found(未找到))</span></span></p>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/03/31/63/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/03/31/63/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/03/31/63/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/03/31/63/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/03/31/63/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1678/" title="简单的Ajax实例 (2009年06月3日)">简单的Ajax实例</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/280/" title="几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比 (2009年04月9日)">几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/27/4752/" title="使用框架建立富联网应用 (2010年07月27日)">使用框架建立富联网应用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/23/1862/" title="XmlHttpRequest的串行异步 (2009年06月23日)">XmlHttpRequest的串行异步</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/20/1107/" title="jQuery与Extjs的Ajax的跨域访问 (2009年05月20日)">jQuery与Extjs的Ajax的跨域访问</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/27/1206/" title="Google AJAX Libraries API (2009年05月27日)">Google AJAX Libraries API</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/07/12/4478/" title="Ajax跨域访问解决方案 (2010年07月12日)">Ajax跨域访问解决方案</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/08/1849/" title="AJAX是如何工作的: AJAX的10个实践运用 (2009年07月8日)">AJAX是如何工作的: AJAX的10个实践运用</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/302/" title="Ajax之XMLHTTP学习理解 (2009年04月9日)">Ajax之XMLHTTP学习理解</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/09/316/" title="ajax与json配合使用最简单实现 (2009年04月9日)">ajax与json配合使用最简单实现</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/03/31/63/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>21个新奇漂亮的Ajax/CSS表格设计</title>
		<link>http://www.iwanna.cn/archives/2009/03/30/15/</link>
		<comments>http://www.iwanna.cn/archives/2009/03/30/15/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 15:21:22 +0000</pubDate>
		<dc:creator>seasun</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.iwanna.cn/?p=15</guid>
		<description><![CDATA[翻译:PARAN
当谈到表格数据的设计时，没有太多的网页设计师会有太大的兴趣。今天我们已经收集了21个功能超大且看上去挺漂亮的Ajax/CSS表格设计，并且教你一些表格设计中所运用的技巧，例如表格数据的排序和过滤等。
OK，让我们来看一下这些表格:
1. Tablecloth
Tablecloth 由CSS Globe 开发，是一个轻巧易于使用的表格，简洁的将表格样式添加到你的HTML 表格元素中。

2. Ask the CSS Guy Table
Ask the CSS Guy Table教给我们要如何去创建能够清晰显出去资料之间的相关联系的表格，例如:点击一个表格元素时，将突了显示这个元素，并且在纵列和横列都显示出相关的类别关系。


#3. A CSS styled table version 2
Veerle Duoh 为我们展示了一个漂亮的表格设计，并教我们如何使用CSS来吸引用户的眼球。

#4. Sortable Table
Sortable Table 演示了如何按升序或降序排列以及如何过滤表格中的数据。

5. Row Locking with CSS and JavaScript
Css Guy再次对表格使用了聚焦高亮的效果，除非用户再次点击，否则表单数据将一直保持亮高。

他还给了我们另一个示例:another example to Lock rows with radios .
#6. Vertical scrolling tables
如果您有大量的表格数据，但却没有太大的空间来展示它，这可能是个比较好的方法:一个纯CSS的表格与固定的标题和页脚，以及滚动显示的内容。

7. Replicating a Tree table
这是一个使用HTML 和CSS 设计的树形状表格。

8 ) Paginate, sort and search [...]]]></description>
			<content:encoded><![CDATA[<p>翻译:PARAN</p>
<p>当谈到表格数据的设计时，没有太多的网页设计师会有太大的兴趣。今天我们已经收集了<strong><a title="21个新奇漂亮的Ajax/CSS表格设计" href="http://www.iwanna.cn/archives/2009/03/30/15/">21个功能超大且看上去挺漂亮的Ajax/CSS表格设计</a></strong>，并且教你一些表格设计中所运用的技巧，例如表格数据的排序和过滤等。</p>
<p>OK，让我们来看一下这些表格:</p>
<h4>1. <a href="http://cssglobe.com/lab/tablecloth/">Tablecloth</a></h4>
<p>Tablecloth 由<a href="http://cssglobe.com/">CSS Globe</a> 开发，是一个轻巧易于使用的表格，简洁的将表格样式添加到你的HTML 表格元素中。</p>
<p><a href="http://cssglobe.com/lab/tablecloth/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c1.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Tablecloth" /></a></p>
<h4>2. <a href="http://www.askthecssguy.com/2007/09/sangeeta_asks_the_css_guy_how_1.html">Ask the CSS Guy Table</a></h4>
<p>Ask the CSS Guy Table教给我们要如何去创建能够清晰显出去资料之间的相关联系的表格，例如:点击一个表格元素时，将突了显示这个元素，并且在纵列和横列都显示出相关的类别关系。</p>
<p><a href="http://www.askthecssguy.com/examples/orbitz/example01.html"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c2.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Ask the CSS Guy Table" /></a><br />
<span id="more-15"></span></p>
<h4>#3. <a href="http://veerle.duoh.com/blog/comments/a_css_styled_table_version_2/">A CSS styled table version 2</a></h4>
<p><a href="http://veerle.duoh.com/">Veerle Duoh</a> 为我们展示了一个漂亮的表格设计，并教我们如何使用CSS来吸引用户的眼球。</p>
<p><a href="http://www.iwanna.cn/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c4.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-A CSS styled table version 2" /></a></p>
<h4>#4. <a href="http://www.iwanna.cn/">Sortable Table</a></h4>
<p>Sortable Table 演示了如何按升序或降序排列以及如何过滤表格中的数据。</p>
<p><a href="http://www.iwanna.cn/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c5.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Sortable Table" /></a></p>
<h4>5. <a href="http://www.askthecssguy.com/2007/05/brett_asks_the_css_guy_if_the.html">Row Locking with CSS and JavaScript</a></h4>
<p>Css Guy再次对表格使用了聚焦高亮的效果，除非用户再次点击，否则表单数据将一直保持亮高。</p>
<p><a href="http://www.askthecssguy.com/examples/rowlock/example8.html"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c3.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Row Locking with CSS and JavaScript" /></a></p>
<p>他还给了我们另一个示例:<a href="http://www.askthecssguy.com/examples/rowlock/example9.html">another example to Lock rows with radios </a>.</p>
<h4>#6. <a href="http://www.cssplay.co.uk/menu/tablescroll.html">Vertical scrolling tables</a></h4>
<p>如果您有大量的表格数据，但却没有太大的空间来展示它，这可能是个比较好的方法:一个纯CSS的表格与固定的标题和页脚，以及滚动显示的内容。</p>
<p><a href="http://www.cssplay.co.uk/menu/tablescroll.html"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c6.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Vertical scrolling tables" /></a></p>
<h4>7. Replicating a Tree table</h4>
<p>这是一个使用HTML 和CSS 设计的树形状表格。</p>
<p><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c7.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Replicating a Tree table" /></p>
<p>8 ) <a href="http://dev.nozav.org/rails_ajax_table.html">Paginate, sort and search a table with Ajax and Rails</a></p>
<p>这个表格提供了一个动态的界面，而不需要重新刷新整个页面。</p>
<p><a href="http://dev.nozav.org/ajaxtable/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c9.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-ajax tables" /></a></p>
<p>9. <a href="http://icant.co.uk/sandbox/footercollapsetables/">Collapsible tables with DOM and CSS</a></p>
<p>此表格加上箭头形象的脚本提示，用来控制表格的伸展和收缩。</p>
<p><a href="http://icant.co.uk/sandbox/footercollapsetables/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c8.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Collapsible tables with DOM and CSS" /></a></p>
<h4>10. <a href="http://motherrussia.polyester.se/jquery-plugins/tablesorter/">TableSorter plug-in for jQuery</a></h4>
<p>它的主要特性包括多列排序，支持&lt;TH&gt;的rowspan和colspan属性以及许多其他功能。</p>
<p><a href="http://motherrussia.polyester.se/docs/tablesorter/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c10.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-TableSorter plug-in for jQuery" /></a></p>
<h4>11. Stripe your tables the OO way</h4>
<p>使用了<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a> 为表格中的行进行颜色交替，并且添加了<span class="code">onmouseover</span> 和<span class="code">onmouseout</span> 事件，当鼠标点击时，切换背景颜色。</p>
<p><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c11.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Stripe your tables the OO way" /></p>
<h4>12. <a href="http://www.chrisesler.com/mootools/mootools-rowcolumnhighlight.php">MooTools Table Row &amp; Column highlighting</a></h4>
<p>基于<a href="http://www.iwanna.cn/tags/mootools/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Mootools">MooTools</a> 框架，高亮显示鼠标悬停时的单元格所在的行和列。</p>
<p><a href="http://www.chrisesler.com/mootools/mootools-rowcolumnhighlight.php"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c12.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-MooTools Table Row &amp; Column highlighting" /></a></p>
<h4>13. <a href="http://icant.co.uk/csstablegallery/">CSS Table Gallery</a></h4>
<p>93 styled tables是一个专门收集表格样式的站点，下面是来自一个表格样式的截图:</p>
<p><a href="http://icant.co.uk/csstablegallery/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c13.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-CSS Table Gallery" /></a></p>
<h4>14. <a href="http://ideamill.synaptrixgroup.com/jquery/tablefilter/tabletest.htm">jQuery Table Filter</a></h4>
<p>可以对数据进行各种不同的排序、过滤。</p>
<p><a href="http://ideamill.synaptrixgroup.com/jquery/tablefilter/tabletest.htm"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c14.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-jQuery Table Filter" /></a></p>
<p>15. <a href="http://www.millstream.com.au/upload/code/tablekit/">Sortable/Resizable/Editable TableKit</a></p>
<p>TableKit基于Prototype框架，专门收集各种HTML表格，可以利用Ajax实时的进行表格栏目大小、排序等编辑。</p>
<p><a href="http://www.millstream.com.au/upload/code/tablekit/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c22.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-sortable, resizable, editable" /></a></p>
<h4>16. <a href="http://www.kryogenix.org/code/browser/sorttable/">Make all your tables sortable</a></h4>
<p><a href="http://www.kryogenix.org/code/browser/sorttable/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c16.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-sortable table" /></a></p>
<h4>17. <a href="http://www.alistapart.com/articles/zebratables/">Zebra Tables</a></h4>
<p>alistapart为我们提供了一个极好的例子，如何使用<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">JavaScript</a>和DOM的改变背景色风格，以突出显示单元格。</p>
<p><a href="http://www.alistapart.com/articles/zebratables/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c17.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Zebra Tables" /></a></p>
<h4>18. <a href="http://www.workingwith.me.uk/articles/scripting/standardista_table_sorting">Standardista Table Sorting</a></h4>
<p>Standardista Table Sorting 是一个<a href="http://www.iwanna.cn/tags/javascript/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with JavaScript">Javascript</a>模块，让您可以对HTML数据表的任何栏目进行排序。</p>
<p><a href="http://www.workingwith.me.uk/articles/scripting/standardista_table_sorting"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c18.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Standardista Table Sorting" /></a></p>
<h4>19. GridView3 Example</h4>
<p><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c19.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-GridView3 Example" /></p>
<h4>20. <a href="http://joomlicious.com/mootable/">Mootable</a></h4>
<p><a href="http://joomlicious.com/mootable/"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c20.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Mootable" /></a></p>
<h4>21. <a href="http://tool-man.org/examples/sorting.html">Drag &amp; Drop Sortable Lists with JavaScript and CSS</a></h4>
<p><a href="http://tool-man.org/examples/sorting.html"><img title="21个新奇漂亮的Ajax/CSS表格设计" src="http://images.uheed.com/iwanna/2010/05/27/c21.gif" alt="21个新奇漂亮的Ajax/CSS表格设计-Drag &amp; Drop Sortable Lists with JavaScript and CSS" /></a></p>
<p>可能还会有一些你更想寻找的详细资料，下面是一些相关的资源链接:</p>
<ul style="width: 400px;">
<li><a href="http://www.456bereastreet.com/archive/200410/bring_on_the_tables/">Bring on the Tables</a></li>
<li><a href="http://www.usability.com.au/resources/tables.cfm">Accessible Data Tables</a></li>
<li><a href="http://www.snook.ca/archives/html_and_css/designing_data_1/">Designing Data Tables</a></li>
<li><a href="http://www.brainjar.com/dhtml/tablesort/demo.html">Brainjar Table Sort</a></li>
<li><a href="http://neil.fraser.name/software/tablesort/">Table Sorter</a></li>
</ul>
<hr />
<p>© <a href="http://www.iwanna.cn">我想网</a> Akon 所有 , 2009. |
<a href="http://www.iwanna.cn/archives/2009/03/30/15/">永久链接</a> |
<a href="http://www.iwanna.cn/archives/2009/03/30/15/#comments">没有评论</a> |
提交到
<a rel="nofollow" target="_blank" href="http://www.google.com/reader/view/feed/http://www.iwanna.cn/archives/2009/03/30/15/">Google Reader</a>
<a rel="nofollow" target="_blank" href="http://www.xianguo.com/subscribe.php?url=http://www.iwanna.cn/archives/2009/03/30/15/">鲜果</a>
<a rel="nofollow" target="_blank" href="http://www.zhuaxia.com/add_channel.php?url=http://www.iwanna.cn/archives/2009/03/30/15/">抓虾</a>
<hr />
</p>
	标签：<a href="http://www.iwanna.cn/topics/ui/javascript/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/tags/ajax/" title="Ajax" rel="tag nofollow">Ajax</a>, <a href="http://www.iwanna.cn/topics/ui/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/tags/css/" title="CSS" rel="tag nofollow">CSS</a>, <a href="http://www.iwanna.cn/topics/ui/javascript/" title="JavaScript" rel="tag nofollow">JavaScript</a><br />

	<h2 class="related_post">您可能会感兴趣的其他文章</h2>
	<ul class="st-related-posts">
	<li><a href="http://www.iwanna.cn/archives/2009/04/29/894/" title="页面输出时一些常用的小技巧 (2009年04月29日)">页面输出时一些常用的小技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/07/16/2019/" title="面向对象的CSS (2009年07月16日)">面向对象的CSS</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/07/981/" title="针对IE8正式版的CSS hack (2009年05月7日)">针对IE8正式版的CSS hack</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/05/01/920/" title="跨浏览器的CSS固定定位{position:fixed} (2009年05月1日)">跨浏览器的CSS固定定位{position:fixed}</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2010/06/09/3823/" title="跨浏览器兼容的 CSS 编码准则和技巧 (2010年06月9日)">跨浏览器兼容的 CSS 编码准则和技巧</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/30/915/" title="解密CSS Sprites：技巧、工具和教程 (2009年04月30日)">解密CSS Sprites：技巧、工具和教程</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/04/15/405/" title="解决IE6、IE7、Firefox兼容最简单的CSS Hack (2009年04月15日)">解决IE6、IE7、Firefox兼容最简单的CSS Hack</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/03/31/79/" title="表单元素：40个CSS/JS风格和功能技术处理 (2009年03月31日)">表单元素：40个CSS/JS风格和功能技术处理</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/10/14/2309/" title="网页布局中易犯的10个CSS小错误 (2009年10月14日)">网页布局中易犯的10个CSS小错误</a> </li>
	<li><a href="http://www.iwanna.cn/archives/2009/06/03/1688/" title="网站头部右上角的导航实现 (2009年06月3日)">网站头部右上角的导航实现</a> </li>
</ul>


<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iwanna.cn/archives/2009/03/30/15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
