`
huqi
  • 浏览: 93691 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用Ajax技术可能面临的一些问题

阅读更多

Ajax确实能给客户甚至开发者带来很棒的体验,但在某些情况下,Ajax所表现出来的特性很可能成为了它的弱点、甚至缺陷。

那么,谈谈使用Ajax技术可能面临的一些问题:

XMLHttpRequest 的可用性

Ajax 开发人员面临的一个最大问题是:在没有XMLHttpRequest 可用时该如何响应?虽然主要的现代浏览器都支持XMLHttpRequest,但仍然有少数用户的浏览器不支持,或者浏览器的安全设置阻止使用XMLHttpRequest。如果开发的 Web 应用程序要部署在企业内部网,那么可能拥有指定支持哪种浏览器的权力,从而可以认为XMLHttpRequest 总能使用。但是,如果要部署在公共 Web 上,那么就必须当心,如果假设 XMLHttpRequest 可用,那么就可能会阻止那些使用旧的浏览器、残疾人专用浏览器和手持设备上的轻量级浏览器的用户使用您的应用程序。

所以,您应当努力让应用程序“平稳降级”,在没有XMLHttpRequest 支持的浏览器中也能够工作。在类似购物车的示例中,把应用程序降级的最好方式可能是让Add to Cart 按钮执行一个常规的表单提交,刷新页面来反映购物车更新后的状态。Ajax 的行为应当在页面装入的时候就通过JavaScript 添加到页面,只有在XMLHttpRequest 可用时才把JavaScript 事件处理函数附加到每个Add to Cart 按钮。另一种方式是在用户登录时检测XMLHttpRequest 是否可用,然后相应地提供应用程序的Ajax 版本或基于表单的普通版本。

可用性考虑

关于Ajax 应用程序的某些可用性问题比较普遍。例如,让用户知道他们的输入已经注册了可能是重要的,因为沙漏光标和spinning 浏览器的常用反馈机制“throbber”对XMLHttpRequest 不适用。一种技术是用“Now updating...”类型的信息替换Submit 按钮,这样用户在等候响应期间就不会反复单击按钮了。

另一个问题是,用户可能没有注意到他们正在查看的页面的某一部分已经更新了。可以使用不同的可视技术,把用户的眼球带到页面的更新区域,从而缓解这个问题。由Ajax 更新页面造成的其他问题还包括:“破坏了”浏览器的后退按钮,地址栏中的URL 也无法反映页面的整个状态,妨碍了设置书签。

服务器负载

用Ajax 实现代替普通的基于表单的UI,会大大提高对服务器发出的请求数量。例如,一个普通的Google Web 搜索对服务器只有一个请求,是在用户提交搜索表单时出现的。而Google Suggest 试图自动完成搜索术语,它要在用户输入时向服务器发送多个请求。在开发Ajax 应用程序时,要注意将要发送给服务器的请求数量以及由此造成的服务器负荷。降低服务器负载的办法是,在客户机上对请求进行缓冲并且缓存服务器响应(如果可能的话)。还应该尝试将Ajax Web 应用程序设计为在客户机上执行尽可能多的逻辑,而不必联络服务器。

处理异步

非常重要的是,要理解无法保证XMLHttpRequest 会按照分派它们的顺序完成。实际上,应当假设它们不会按顺序完成,并且在设计应用程序时把这一点记在心上。在类似购物车的示例中,使用最后更新的时间戳来确保新的购物车数据不会被旧的数据覆盖。这个非常基本的方式可以用于购物车场景,但是可能不适合其他场景。所以在设计时请考虑如何处理异步的服务器响应。



分享到:
评论

相关推荐

    基于AJAX技术的WebGIS查询系统的开发

    基于AJAX技术的WebGIS查询系统的开发,顾高翔,,传统的WebGIS系统在处理海量的地理数据时面临着响应速度慢,服务器负荷重等一系列问题。AJAX应用可以仅向服务器发送并取回必需的数�

    Ajax+Struts+Hibernate技术在理财智能系统中的研究

    文章给出了Struts、Ajax、Hibernate三者整合开发理财智能系统时所面临的技术难点和解决方案,MVC模式将表示层、控制层、业务逻辑层及持久层进行合理分离,主要目的是提供财务数据统一管理以及为做出合理的财务决策提供...

    基于Ajax的应用程序架构开发面临问题

    Bindows是一个软件开发包(SDK),它,通过强力联合DHTML,JavaScript,CSS和XML等技术,能生成高度交互的互联网应用程序-成为现代的桌面应用程序的强有力对手。... Bindows有可能领导面向对象开发的AJAX应用程序的平台。

    像专业人员一样开发Ajax应用程序,第1部分:使用PrototypeJavaScript库和script.aculo.us

    火龙果软件工程技术中心 本文内容包括:Prototype简介使用Prototype的Ajax库结束语下载参考资料目前,Web应用程序开发几乎等同于Ajax开发。Ajax不再是在特殊情况下才添加到应用程序的补充物了。它现在已经成为Web...

    Js中使用hasOwnProperty方法检索ajax响应对象的例子

    经常使用百度搜索的同学,一定不会忽视输入框的下拉索引,它是如此方便,然而得天独厚的条件使得这项异步技术多少面临些考验,高并发的服务端请求督促着他们的前端攻城师必须尽可能地减少发送ajax的次数。...

    asp.net知识库

    2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0) Server Side ViewState 在服务器端存贮ViewState (ASP.NET 2.0) VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step ...

    richfaces4-tab-panel-bug-reproducer:Richfaces 4选项卡面板的错误复制器

    如果您的应用程序是使用<ui> + 技术构建的,这在JSF + Richfaces应用程序中非常常见,那么您将面临以下问题: 页面A通过Ajax调用打开页面B。 页面B具有组件。 选择多个选项卡时会发生错误! 使用非Ajax调用打开页面...

    基于SpringBoot的墙绘产品展示交易平台的设计与实现毕业设计(源码+论文).rar

    墙绘产品展示交易平台的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理...

    PHP.Web.2.0开发实 12卷 之6

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之1

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之4

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之3

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 终章

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷之5

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之2

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之六

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之七

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之9

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

    PHP.Web.2.0开发实战 12卷 之10

     “……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”  ——Slashdot.org  PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、...

Global site tag (gtag.js) - Google Analytics