何时适合使用AJAX?

4
什么情况下使用AJAX比较合适?使用AJAX的利弊是什么?
针对我的上一个问题,一些人非常坚定地认为只有在适当的情况下才应该使用AJAX:Should I add AJAX logic to my PHP classes/scripts? 回答Chad Birch的问题: 是的,我指的是在开发“标准”网站时,为了获得其益处而使用AJAX,并且不会因其应用而降低搜索排名。以会影响搜索排名的方式使用AJAX是不可接受的。因此,如果“保持网站完整性”需要更多的工作,则这将是一个“缺点”。
8个回答

8
这是一个相当广泛的主题,但你应该使用AJAX来增强用户体验,而不是完全依赖它。请记住,搜索引擎和其他一些访问者无法执行AJAX,因此,如果您依赖它来加载内容,这将对您不利。
例如,您可能认为让用户访问您的博客,然后在他们已经在那里时使用AJAX动态加载最新的文章会很好。然而,当Google尝试索引您的博客时,它只会得到空白网站。
一个好的搜索词来查找与此主题相关的资源是“渐进增强”。有很多好东西在那里,花点时间跟随链接。以下是一个起点:http://www.alistapart.com/articles/progressiveenhancementwithjavascript/

谢谢您的第一段内容。关于博客部分,您是否可以只使用普通的博客页面进行索引,并在事后添加AJAX呢? - John B
是的,这正是“渐进增强”所指的。页面应该对于那些不能使用AJAX的人(或机器人)仍然完全可用,但如果他们可以使用AJAX的话,它应该会更好。很多网站都犯了这个错误,尝试默认禁用脚本时使用NoScript,很多网站根本无法工作。 - Chad Birch
一个好的代码设计原则是:你永远不想破坏那些不能或不会使用Javascript的人的体验。 - Matt Howell

5
当您只更新页面的一部分或执行不更新页面的操作时,AJAX是一个非常好的工具。相比于整个页面刷新,它要轻得多。相反,如果您的整个页面重新加载或更改为不同的视图,则确实应该链接(或发布)到新页面,而不是通过AJAX下载并替换整个内容。
使用AJAX的一个缺点是它需要javascript正常工作,或者您构建视图的方式使UI在没有它的情况下仍然工作。这比仅通过正常链接/发布来完成更加复杂。

2
AJAX通常用于在页面已经加载时执行HTTP请求(而不需要加载另一个页面)。
最常见的用途是更新view的一部分。请注意,这不包括刷新整个视图,因为您可以导航到新页面。
另一个常见用途是提交表单。在所有情况下,但特别是对于表单,重要的是要有良好的处理没有JavaScript或禁用JavaScript的浏览器的方法。

2
我认为使用 ajax 技术的优势不仅在于创造更好的用户体验,而且能够仅针对特定数据进行服务器调用,这是一个巨大的性能优势。
想象一下拥有大量带宽消耗的网站(如stackoverflow),用户大部分的导航都是通过页面重新加载和连续发送HTTP数据完成的。
当然,缓存和其他技术可以帮助解决带宽超额问题,但我个人认为每次发送大块HTML内容真的很浪费。
缺点是SEO(与高度基于ajax的站点不兼容)和禁用JavaScript的人。

我想补充一点,当谨慎使用时,AJAX可以提高性能。如果使用过多,会在用户端和服务器端都造成性能问题。 - Jason Baker

1

当您的应用程序(或用户)需要比传统网页更丰富的用户体验时。


1

Ajax 给你带来了两个重要的东西:

响应性 - 如果需要,您可以仅更新网页的部分内容(节省重新加载页面的时间)。 它还使得在表格中呈现的数据进行分页更加容易。

用户体验 - 这与响应性相伴而生。 使用 AJAX,您可以添加动画、更酷的弹出窗口和特效,为您的网页提供更新、更清洁和更酷的外观和感觉。 如果没有人认为这很重要,那就看看 iPhone 吧。 用户体验吸引人们使用应用程序,是确保应用程序成功的关键步骤之一。

对于一个好的案例研究,请看看这个网站。 像动画显示您发布的新答案、弹出窗口告诉您不能做某些事情以及提示您自己的答案发布后有新答案等 AJAX 效果都是吸引人们进入此网站并使其成功的一部分。


0

Ajax主要用于在不重新向服务器提交所有信息的情况下重新加载页面的一部分。

缺点:

  • 比普通的post请求更加复杂(需要与不同的浏览器协作,编写服务器端代码来处理部分后台请求)
  • 引入潜在的安全漏洞(您正在引入与服务器交互的额外代码。这可能会在客户端和服务器端都成为问题。 在客户端,您需要发送和接收响应的方式。这是与浏览器交互的另一种方式,这意味着还有另一个必须受到保护的入口点。执行任意代码,在非预期来源发布数据等。有几个针对Ajax应用程序的漏洞经过了修补,但总会有更多的漏洞。)

优点:

  • 对终端用户更具吸引力
  • 允许在不同时加载所有信息的情况下显示大量信息。
  • 页面更具交互性。

解释使用Ajax所创建的安全漏洞。 - Allain Lalonde
不应该有任何问题 - 服务器仍然负责执行它。 - Don Branson
你不是认真的吧?你不认为在实现ajax时会有任何额外的安全漏洞吗? - kemiller2002
是的,我很认真。所有与安全有关的问题,ajax已经存在于传统的http请求中。Ajax并没有为我们与浏览器或服务器交互的方式增加任何东西。它只是在两端使用已经存在的技术。 - Don Branson
问题不在于基础技术,而在于使用技术的心态。Ajax改变了Web应用程序的创建方式,并因此暴露了新的漏洞。关于应用程序安全性的某些假设不再适用。 - kemiller2002

0
Javascript应该总是作为您网站功能的一个补充。您应该能够在没有任何Javascript参与的情况下使用和浏览网站。您可以使用Javascript作为现有功能的补充,例如避免整页重新加载。这对于可访问性来说是一个重要因素。Javascript永远不应作为到达或完成站点请求的唯一可能性。
由于AJAX利用Javascript,因此同样适用于此处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接