`
huqi
  • 浏览: 97055 次
  • 性别: 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问题的讲解

    AJAX技术早期在一些Web应用中已有所应用,如Flickr、Backpack和Google Maps等。随着技术的发展,XMLHttpRequest的广泛支持和JavaScript库(如jQuery、Prototype等)的出现,AJAX的应用变得更加便捷,推动了Web 2.0...

    在线聊天系统是使用Ajax技术

    本文将深入探讨Ajax技术在构建在线聊天系统中的应用及其优点。 Ajax技术的核心在于异步通信,这意味着可以在不重新加载整个网页的情况下,与服务器交换数据并局部更新页面。它通过JavaScript的XMLHttpRequest对象...

    如何利用AJAX技术改进在线考试系统

    AJAX技术的出现,为解决这些问题提供了新的思路。本文将深入探讨如何利用AJAX技术优化在线考试系统,提升用户体验,增强系统性能。 #### AJAX技术概述 AJAX(Asynchronous JavaScript and XML)是一种在无需重新...

    利用ajax技术进行局部刷新

    4. **安全性**:Ajax请求也可能面临XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等安全问题,需要采取相应的安全措施。 总之,Ajax技术为Web应用带来了更流畅的用户体验和更高的性能效率,但同时也需要开发者关注其...

    浅析Ajax技术.pdf

    本文将深入浅出地分析AjAX技术,并探讨其在现代Web应用中的重要作用和面临的挑战。 AjAX技术是一种结合了异步通信、JavaScript以及XML的Web技术,它的核心在于能够在不重新加载整个页面的情况下,与服务器进行数据...

    Ajax从入门到精通.pdf

    浏览器兼容性问题主要是指不同浏览器对Ajax技术的支持程度不一,这要求开发者在开发过程中进行兼容性测试,确保网页在各种浏览器上都能正常工作。安全性问题则是Ajax应用中不可忽视的部分,开发者需要确保传输过程中...

    ASP.NET Ajax技术文档1

    尽管动态Web技术取得了显著的进步,但在实际使用过程中,用户仍然面临着长时间的等待问题,尤其是在页面重载时。为了解决这个问题,AJAX技术应运而生。AJAX技术通过异步加载数据的方式,大大减少了用户等待的时间,...

    AJAX(Asynchronous JavaScript and XML)技术

    AJAX技术的起源可以追溯到1998年左右,当时微软的Outlook Web Access团队开发出了XMLHttpRequest组件,该组件后来被集成到了Internet Explorer 4.0中。这一技术随后被多个公司和技术社区广泛应用和发展。2005年,...

    Ajax技术研究及其Web应用

    尽管Ajax带来了诸多优势,但它也面临着一些挑战,如浏览器兼容性问题、SEO(搜索引擎优化)难题以及开发复杂度的增加。未来,Ajax技术将朝着更加成熟和高效的方向发展,包括改善跨浏览器兼容性、增强对移动设备的...

    计算机专业毕业论文 毕业设计论文 论文示例 ajax

    6. 问题与挑战:讨论Ajax应用可能面临的问题,如浏览器兼容性、安全性和用户体验优化。 7. 结论:总结研究结果,展望Ajax技术未来的发展趋势。 论文的作者通过深入探讨和实践,展示了Ajax在减轻服务器压力、提升...

    AJAX也有安全隐患.doc

    AJAX技术通过在客户端使用JavaScript与服务器进行异步通信,实现了Web页面的部分更新,避免了整个页面的重新加载,从而极大地提高了用户体验。这种技术的核心在于`XMLHttpRequest`对象,它可以发送异步HTTP请求并与...

    AJAX中不触发javascript事件

    标题中的“AJAX中不触发javascript事件”指的是在使用AJAX技术进行页面更新时,可能出现JavaScript事件不按预期触发的情况。这通常是由于AJAX请求更新页面部分时,不会触发表单提交、点击或其他依赖于页面刷新的...

    AJAX-2.rar

    为了确保广泛兼容,开发者可能需要使用polyfill或者库(如jQuery)来解决老版本浏览器的问题。 **8. SEO 和页面跳转:** 由于AJAX加载的内容在初始页面加载时不被爬虫抓取,可能会影响搜索引擎优化(SEO)。为了...

    Ajax,未来的WebServices

    分析师认为,随着Ajax技术的发展,它可能会成为SOA和Web服务的主要用户接口。Ajax能够提供更丰富的功能和更好的用户体验,使得企业级应用变得更加吸引人。在SOA环境中,Ajax可以作为企业门户的替代品,特别是在需要...

    Ajax安全技术.pdf

    而使用Ajax技术后,只需更新部分数据即可完成页面刷新,大大提高了效率。 #### 二、Ajax安全挑战 随着Ajax技术的广泛应用,其安全性也日益受到关注。Ajax应用涉及客户端与服务器端之间的数据交换,因此面临诸多...

    FireFox和debug调试ajax

    然而,调试AJAX代码有时会成为开发者面临的一个挑战,因为其异步性质使得问题定位较为复杂。幸运的是,Firefox浏览器提供了一个强大的调试工具,结合特定的debug插件,可以极大地简化这个过程。 标题“FireFox和...

    VS AJAX控件工具包

    AJAX技术的核心在于允许后台数据的异步交换,而无需刷新整个页面,这显著提升了Web应用的响应速度和用户界面的流畅度。 在VS2005中集成AJAX控件工具包,可以为开发者带来以下关键知识点: 1. **AJAX概述**:AJAX...

Global site tag (gtag.js) - Google Analytics