ajax为什么令人惊异?ajax的优缺点

使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。

Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。

对应用Ajax最主要的批评就是,它可能破坏浏览器的后退功能。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)

一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持追踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。

进行Ajax开发时,网络延迟——即用户发出请求到服务器发出响应之间的间隔——需要慎重考虑。如果不给予用户明确的回应,没有恰当的预读数据,或者对XMLHttpRequest的不恰当处理[6],都会使用户感到厌烦[7]。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。


上一篇:Node.js 2014这一年发生了什么
下一篇:HTML5的5个不错的开发工具推荐

相关推荐

  • (ajax)query中全局事件ajaxStart ajaxStop

    Jquery中当一个Ajax请求启动时,并且没有其他未完成的Ajax请求时, 将调用ajaxStart()方法。 同样,ajaxStop()方法则是在所有Ajax请求都完成时调用。

    2 年前
  • 非ajax jQuery POST请求

    amit提出了一个问题:non-AJAX jquery POST request,或许与您遇到的问题类似。 回答者Doug Neiner给出了该问题的处理方式: I know what you are...

    3 年前
  • 防止重复发送 Ajax 请求

    要考虑并理解 success, complete, error, timeout 这些事件的区别,并注册正确的事件,一旦失误,功能将不再可用; 不可避免地比普通流程要要多注册一个 complete 事...

    4 年前
  • 防止浏览器缓存ajax调用结果

    Mark BellSalamander2007提出了一个问题:Prevent browser caching of jQuery AJAX call result,或许与您遇到的问题类似。

    3 年前
  • 通过koa2和Promise.race()构造一个超时取消的ajax。

    MDN上说: 你可以使用AbortController.AbortController()构造函数创建一个新的AbortController对象。 使用AbortSignal 对象完成与DOM请求的...

    2 年前
  • 通过jsonp获取json数据实现AJAX跨域请求

    AJAX(异步的 JavaScript 和 XML)是用于创建快速动态网页的一种技术,它在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页,ajax 使用XMLHttpRequest对象在后...

    4 年前
  • 返回“jQuery Ajax请求parsererror”

    David Eastdkarzon提出了一个问题:jQuery returning “parsererror” for ajax request,或许与您遇到的问题类似。

    3 年前
  • 跨域POST请求不发送cookie Ajax jQuery

    abatishchevKirill Reva提出了一个问题:Cross domain POST request is not sending cookie Ajax Jquery,或许与您遇到的问题类...

    2 年前
  • 跨域Ajax方法

    经典Ajax示例: var request = new XMLHttpRequest(); request.open("POST", "index.php"); var data = "paramet...

    2 年前
  • 调用Ajax响应返回的JavaScript函数

    Federico Zancanwilliamtroup提出了一个问题:Calling a JavaScript function returned from an Ajax response,或许与您...

    3 年前

官方社区

扫码加入 JavaScript 社区