与纯JSON / P实现相比,AJAX / XHR有什么优势吗?

时间:2009-07-17 09:45:45

标签: javascript ajax json xmlhttprequest

不是严格意义上的编程主题,但欣赏输入。我最近使用YouTube API开发了很多东西,我开始使用PHP代码,使用SimpleXML,然后实际上跳过了AJAX并直接使用本机JSON并做了客户端的所有事情。

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

实际上,一个缺点是,有时候,JavaScript会快速移动 ,并且没有延迟,它可能会感到有些跳跃。

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

修改

为了清楚起见,我在谈论在直接调用JSON API(JSON-P)之后使用/依赖加载的回调是否足够安全,或者你是否真的应该依赖于一个绝缘服务器 - 您和第三方API之间的侧层(XHR),如果没有别的 - 用于缓存目的?

2 个答案:

答案 0 :(得分:8)

XHR:

  • 授予您访问HTTP标头
  • 的权限
  • 允许访问错误代码
  • 允许您定义服务错误时要采取的操作
  • 不需要全局回调函数

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

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

答案 1 :(得分:3)

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

XHR(XMLHttpRequest)

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

JSON(JavaScript Object Notation)

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,它具有单独页面的概念,但完全使用地址的哈希部分进行导航。它确实有你所说的这种跳跃行为(但它可以继续使用。)