代码之家  ›  专栏  ›  技术社区  ›  FilmJ

Ajax/XHR比纯JSON/P实现有什么优势吗?

  •  1
  • FilmJ  · 技术社区  · 15 年前

    不是严格的编程主题,但需要输入。最近我用YouTube API开发了很多东西,从PHP代码开始,使用 SimpleXML 然后实际上跳过了Ajax,直接开始使用本机JSON并完成客户端的所有工作。

    虽然它“感觉”更快,但我想知道它是否已经为黄金时段做好了准备。即使有了大量的框架,CSS的限制和浏览器之间事件传播处理的变化仍然使我对在应用程序中过度使用JavaScript持谨慎态度。

    一个缺点是,有时候,javascript会移动 速度快,没有延误,它可能会感到紧张。

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

    编辑:

    明确地说,我在讨论使用/依赖直接调用JSON API(JSON-P)后加载的回调是否足够安全,或者您是否真的应该依赖于您和第三方API之间的隔离服务器端层(XHR),如果没有其他东西的话——用于缓存目的?

    2 回复  |  直到 13 年前
        1
  •  8
  •   Quentin    15 年前

    XHR:

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

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

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

        2
  •  3
  •   Blixt    15 年前

    我认为定义您提到的每种技术是一个好主意,因为您似乎在比较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%的需求。

    我最近的大多数私有Web项目都是用JavaScript实现的,使用XHR请求到服务器获取数据。其中一个例子就是我的 collection of JavaScript libraries 它具有单独页面的概念,但完全使用地址的哈希部分进行导航。它确实有你所说的那种神经质的行为(但它是可以解决的)。