【问题标题】:Is there any advantage of AJAX / XHR over pure JSON/P implementations?与纯 JSON/P 实现相比,AJAX/XHR 有什么优势吗?
【发布时间】:2009-07-17 09:45:44
【问题描述】:

严格来说不是一个编程主题,但欢迎输入。我最近一直在使用 YouTube API 开发很多东西,我从 PHP 代码开始,使用 SimpleXML,然后实际上跳过了 AJAX,直接使用原生 JSON 并在客户端做所有事情。

虽然“感觉”更快,但我想知道它是否已经准备好迎接黄金时段了。即使有许多框架,CSS 限制和浏览器之间事件传播处理的变化仍然让我对在我的应用程序中过度使用 Javascript 保持警惕。

一个缺点实际上是有时,JavaScript 移动 快,如果没有延迟,它可能会让人感到跳动。

这些只是我的想法。实际上,我还没有真正深入研究 XHR,因为 JSON 非常有意义,但我很想知道经验丰富的程序员喜欢什么以及为什么喜欢。

编辑:

明确地说,我说的是使用/依赖直接调用 JSON API (JSON-P) 后加载的回调是否足够安全,或者你是否真的应该依赖绝缘服务器 -您和第三方 API 之间的侧层(XHR),如果没有别的 - 用于缓存目的?

【问题讨论】:

    标签: javascript ajax json xmlhttprequest


    【解决方案1】:

    XHR:

    • 让您可以访问 HTTP 标头
    • 允许访问错误代码
    • 让您定义服务出错时要采取的措施
    • 不需要全局回调函数

    JSON-P 是一种火和祈祷的方法。

    不过,您无法比较 XHR 和 JSON。 XHR 是一种发出 HTTP 请求的方式。 JSON 是一种数据格式。你可以一起使用它们。 JSON-P 涉及生成 <script> 元素来获取 JSON 而不是使用 XHR。

    【讨论】:

    • 所以我想,我的主要问题是,使用纯 JSON-P 的 API 并使用 jQuery 进行处理是否足够强大以应对繁重的流量,或者是否有必要增加数据处理的绝缘性服务器端,更不用说其他好处了。
    【解决方案2】:

    我认为定义您提到的每种技术是一个好主意,因为您似乎在比较 XHR 和 JSON,它们处于两个不同的级别并且无法比较。

    XHR (XMLHttpRequest)

    Description of the XMLHttpRequest object at MDC
    这是 JavaScript 中用于向服务器执行 HTTP 请求的对象。虽然名称暗示它请求 XML,但它可以接收任何类型的数据(例如 JSON)。

    JSON(JavaScript 对象表示法)

    Definition of JSON at json.org
    这是一种数据格式。它可用于表示与 XML 很相似的数据结构,但以更简洁的方式。它还与 JavaScript 直接兼容,并且很容易转换为 JavaScript 对象。

    JSONP(带填充的 JSON)

    Definition of JSONP by Bob Ippolito
    JSON 的一个扩展,它注入一个<script> 标记,该标记直接从请求它的服务器执行一段 JavaScript。附加的回调参数是在您的页面上调用以委托数据的全局函数。用于从 JavaScript 中的外部服务请求数据。

    AJAX(异步 JavaScript 和 XML)

    我无法准确地描述这个,因为它可能意味着很多东西。请查看Wikipedia entry


    我会说它肯定已经准备好迎接黄金时段了。如果感觉“太快”,则很容易从一种状态过渡到另一种更平滑/更慢的状态。

    使用当今的框架,您可以让 JavaScript 在 99% 的访问者浏览器中表现相同。假设每个人都启用了 JavaScript 甚至是相当安全的(例如 YouTube,除非你启用了 JavaScript,否则它不会播放视频。)

    不过,为您的网站提供一个简单的静态后备版本仍然是一个好主意,以满足最后 1% 的需求。

    我最近的大部分私人网络项目主要是用 JavaScript 实现的,使用 XHR 请求到服务器来获取数据。一个这样的例子是我的collection of JavaScript libraries,它具有单独页面的概念,但完全使用地址的哈希部分进行导航。它确实有你所说的这种神经质的行为(但它可以处理。)

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 2011-03-13
      • 1970-01-01
      相关资源
      最近更新 更多