使用jquery进行ajax调用的优点和缺点是什么?

时间:2010-04-06 07:13:40

标签: jquery

由于jquery ajax调用使得生活真的很酷而没有页面刷新......但是仍然有兴趣了解用jquery进行ajax调用的一些优点和缺点....

由于我在我的网站上使用ajax调用我的所有添加,编辑和删除操作,它现在运行良好...仍然知道缺点会使部署期间的生活更轻松....

4 个答案:

答案 0 :(得分:8)

PRO:

  

在许多情况下,网站上的相关网页包含很多内容,这些内容在它们之间很常见。使用传统方法,必须在每个请求上重新加载该内容。但是,使用Ajax,Web应用程序只能请求需要更新的内容,从而大幅减少带宽使用和加载时间。

     

异步请求的使用允许客户端的Web浏览器UI更具交互性并快速响应输入,页面的各个部分也可以单独重新加载。即使应用程序在服务器端没有更改,用户也可能会感觉应用程序更快或响应更快。

     

使用Ajax可以减少与服务器的连接,因为脚本和样式表只需要请求一次。[12]

     

可以在整个网站上维护状态。 JavaScript变量将保持不变,因为无需重新加载主容器页面。

CON:

  

>   由于它们的动态特性,与静态页面相比,Ajax接口通常更难开发。

     

使用连续的Ajax请求动态创建的页面不会自动向浏览器的历史引擎注册,因此单击浏览器的“后退”按钮可能不会将用户返回到启用Ajax的页面的早期状态,而是可能返回它们到它之前访问的最后一页。解决方法包括使用不可见的IFrame来触发浏览器历史记录的更改,并在运行Ajax时更改URL的锚点部分(在#之后),并监视它的变化。

     

动态网页更新还使用户难以为应用程序的特定状态添加书签。存在这个问题的解决方案,其中许多使用URL片段标识符('#'之后的URL部分)来跟踪并允许用户返回给定状态的应用程序。

     

由于大多数网页抓取工具不会执行JavaScript代码,因此可公开索引的网络应用程序应该提供另一种方法来访问通常使用Ajax检索的内容,以允许搜索引擎对其进行索引。

     

任何浏览器不支持JavaScript或XMLHttpRequest或仅禁用此功能的用户将无法正确使用依赖于Ajax的页面。同样,移动电话,PDA和屏幕阅读器等设备可能无法支持所需的技术。能够使用Ajax的屏幕阅读器可能仍然无法正确读取动态生成的内容。让用户执行功能的唯一方法是回退到非JavaScript方法。这可以通过确保链接和表单可以正确解析而不仅仅依赖于Ajax来实现。在JavaScript中,表单提交可以通过“return false”停止。

     

相同的源策略阻止某些Ajax技术跨域使用,尽管W3C有一个XMLHttpRequest对象的草案,可以启用此功能。

     

与其他Web技术一样,Ajax也有自己的一组漏洞,开发人员必须解决这些漏洞。熟悉其他Web技术的开发人员可能必须学习新的测试和编码方法来编写安全的Ajax应用程序。

     

基于Ajax的接口可能会显着增加用户生成的Web服务器及其后端(数据库或其他)请求的数量。这可能导致更长的响应时间和/或额外的硬件需求。

wikipedia.org

答案 1 :(得分:8)

AJAX的最佳用途是用于发送小型有效负载。这是一个简单的例子。

我加载了一个包含库存信息的页面。它有图表,图表,公司信息,还显示股价。每30秒,我发出一个AJAX请求,获取更新的股价并在页面上更改它。

如果没有AJAX,我可能会决定每隔30秒刷新整个页面,但是使用AJAX,我可以发出一个轻量级请求来获取我需要的一小部分信息。

使用AJAX提交表单并不总是最好的选择。除了通常没有真正优于发布表单的明显优势之外,您还打破了浏览器历史记录等惯例(尽管某些浏览器现在包含JavaScript“状态”作为历史记录中的页面)。

使用AJAX时,您需要处理告诉用户出错的任务。你可以通过指定错误会发生什么来使用jQuery来做到这一点,但很多人忘了这样做,而最终用户却没有意识到任何问题。

需要注意的其他问题是可能阻止您的事件被触发的任何JavaScript错误 - 或者如果禁用JavaScript,在任何一种情况下确保表单可以在添加AJAX代码之前正常提交是最安全的选项。

答案 2 :(得分:5)

好吧,jAndy似乎已经确定了优势,你似乎已经意识到了优势,或者你不会使用它。

缺点是如果你在整个页面中加载它会破坏浏览器的后退按钮(是的,这可以通过更多的JS魔法修复)。但是如果你的整个站点依赖于ajax,那么它可能无法在JS禁用的情况下运行。此外,它不会产生非常好的URL。如果你想将你的朋友链接到ajax密集型网站中的特定页面,并假设你已经完成了你的JS魔法,这实际上是可行的(修改#字符后的URL),它仍然需要加载主首先是页面,然后等待JS启动才能在你真正感兴趣的内容中加载ajax.I我发现这实际上给了更慢的感知响应时间,我不这样做像一样。我喜欢ajax,但我不喜欢整页的东西。

答案 3 :(得分:2)

它在浏览器和规范之间的战斗历史悠久,最终陷入了混乱。当我们意识到我们花费更多时间解决跨浏览器特定问题而不是解决编程业务逻辑/问题时,我们作为开发人员了解它。

+已经

  1. 没有跨浏览器的痛苦
  2. 你可以相信,优秀的开发人员已经花费了时间和精力制作图书馆
  3. 你可以更专注于实际问题而不是副作用
  4. API很好。如果有人告诉UI开发人员ajax,HTTP,JavaScrtip bla bla bla ........ OFFFF简单的函数总是很棒的Ajax.call(url,callbackfunction,param)。这就是我们大多数时候都在寻找的。
  5. 节省大量时间:)你可以享受派对而不是深夜工作
  6. -ve

    1. U将在光滑的表面上进行游戏,并保护皮肤免受头痛,这对我们软件工程师来说是个好消息
    2. 如果您使用某个探查器,您会发现在该功能内进行了几十次调用,以便使用少量MILLISECONDS的库进行操作。但考虑到我们在开发过程中节省的时间,这并不是什么大不了的事。
    3. 你必须相信图书馆所说的话。所以我建议只坚持好的。是的,你使用最好的
    4. 之一

      希望有所帮助,