﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-livesylvia-文章分类-AJAX</title><link>http://www.cnitblog.com/livesylvia/category/1719.html</link><description>web,ajax,php,linux</description><language>zh-cn</language><lastBuildDate>Tue, 18 Oct 2011 10:58:22 GMT</lastBuildDate><pubDate>Tue, 18 Oct 2011 10:58:22 GMT</pubDate><ttl>60</ttl><item><title>使用Ajax的挑战</title><link>http://www.cnitblog.com/livesylvia/articles/6201.html</link><dc:creator>AJAX</dc:creator><author>AJAX</author><pubDate>Mon, 16 Jan 2006 05:31:00 GMT</pubDate><guid>http://www.cnitblog.com/livesylvia/articles/6201.html</guid><wfw:comment>http://www.cnitblog.com/livesylvia/comments/6201.html</wfw:comment><comments>http://www.cnitblog.com/livesylvia/articles/6201.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/livesylvia/comments/commentRss/6201.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/livesylvia/services/trackbacks/6201.html</trackback:ping><description><![CDATA[<DIV class=title>
<H1>&nbsp;</H1></DIV>
<DIV class=content>
<P>　　与任何技术一样，使用Ajax在相当多的方面都可能范错误。我在这儿讨论的问题目前都缺少解决方案，并将会随着Ajax的成熟而解决或提高。随着开发Ajax应用经验的不断获取，开发者社区中将会出现最好的实践经验与指导方针。</P>
<P>　　1、XMLHttpRequest的有效性</P>
<P>　　Ajax开发者面对的一个最大问题是当XMLHttpRequest不可用时如何反应。虽然大部分现代浏览器支持XMLHttpRequest，但还是有少量的用户，他们的浏览器不能支持，或由于浏览器安全设置而阻止对XMLHttpRequest的使用。若你的Web应用发布于公司内部的Intranet上，你很可能可以指定支持哪种浏览器，并可以确保XMLHttpRequest是可用的。若你在公共WEB上发布，则你必须意识到由于假定XMLHttpRequest是可用的，所有就阻止了老浏览器、手持设备浏览器等等用户来使用你的系统。</P>
<P>　　然而，你应该尽力保证应用系统“正常降级”使用，在系统中保留适用于不支持XMLHttpRequest的浏览器的功能。在购物车例子中，最好的方法是有一个Add to Cart按钮，可以进行常规的提交处理，并刷新页面来反映购物车状态的变化。Ajax行卫可以在页面被载入时通过JavaScript添加到页面中，只在XMLHttpRequest可用的情况下，为每个Add to Cart按钮加上JavaScript处理函数。另一个方法是在用户登录时检测XMLHttpRequest，再决定是提供Ajax版本还是常规基于form提交的版本。</P>
<P>　　2、可用性考虑</P>
<P>　　围绕着Ajax应用的大部分问题都是很普通的问题。例如，让用户知道他们的输入已经被注册并处理，是很重要的，因为在XMLHttpRequest处理过程中并不能提供通常的漏斗旋转光标。一种方法是将“确认”按扭上的文本替换为“正在更新中…”，以避免用户在等待响应时多次点击按钮。</P>
<P>　　另一个问题是，用户可能没有注意到他们正在观看的页面已经被更新。可以通过使用各种视觉技巧来将用户的眼光吸引到页面的更新区域。还有一个问题是通过Ajax更新页面打断了浏览器“退回前页”按钮的正常工作，地址栏中的URL不能反映页面的全部状态，并且不能使用书签功能。参见Resource章节中列出的网站地址上的文章来了解更多Ajax应用关于可用性方面的问题。</P>
<P>　　3、服务器负载</P>
<P>　　使用Ajax界面代替传统的基于form的界面可能戏剧性地增加传递到服务器的请求数量。例如，一个普通的Google搜索给服务器造成一次命中，并在用户确认搜索表单时发生。然而，Google Suggest，将会试图自动完成你的搜索词，在用户打字时将会往服务器发送多个请求。在开发一个Ajax应用时，要注意到你将会发送多少请求到用户器端，以及服务器的负载指标。你可以通过在客户端适当地缓存请求、与服务器响应来缓减负载压力。你也应该在设计Ajax应用时尽量在客户端处理更多的逻辑，而不用与服务器端通讯。</P>
<P>　　4、处理异步</P>
<P>　　一定要记住，没有任何东西可以保证XMLHttpRequest将会按照它们被发送的顺序来依次结束。实际上，你在设计系统时，脑子里应该始终假定它们不会按原来顺序结束。在购物车例子中，使用了一个最后更新的时间戳来保证最新的数据不会被改写。这个非常基本的方法可以在购物车场景中工作，但可能不能在其它情况下工作。在设计时刻就要考虑你该如何处理异步服务器响应。</P>
<P>　　结论</P>
<P>　　你现在应该对于Ajax的基本原则有了一个良好的了解，另外，你应该理解一些更高级的随Ajax方法而来的设计问题。创建一个成功的Ajax应用需要一系列的方法—从JavaScript UI设计到服务器端架构—但是你现在应该已经具备了需要使用到的Ajax核心知识。</P></DIV><img src ="http://www.cnitblog.com/livesylvia/aggbug/6201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/livesylvia/" target="_blank">AJAX</a> 2006-01-16 13:31 <a href="http://www.cnitblog.com/livesylvia/articles/6201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>