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

ACP*_*ACP 10 jquery

正如jquery ajax调用使得生活真的很酷而没有页面刷新......但仍然有兴趣知道使用jquery进行ajax调用的一些优点和缺点....

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

jAn*_*ndy 8

PRO:

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

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

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

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

CON:

>由于其动态特性,与静态页面相比,Ajax接口通常更难开发.

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

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

由于大多数Web爬网程序不执行JavaScript代码,因此可公开索引的Web应用程序应提供访问通常使用Ajax检索的内容的替代方法,以允许搜索引擎对其进行索引.

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

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

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

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

wikipedia.org


Fen*_*ton 8

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

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

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

使用AJAX提交表单并不总是最好的选择.除了没有真正给你明显的优势,而不是正常发布表单,你打破了浏览器历史记录等惯例(虽然有些浏览器现在包含JavaScript"状态"作为历史记录中的页面).

使用AJAX时,您需要处理告诉用户是否出错的任务.你可以通过指定错误应该发生什么来使用jQuery来做到这一点,但很多人忘记这样做,最终用户幸福地没有意识到任何问题.

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


mpe*_*pen 5

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

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