【问题标题】:Ajax: Definition vs Implementation? (XML vs JSON vs Other)Ajax:定义与实现? (XML vs JSON vs 其他)
【发布时间】:2009-02-14 16:21:55
【问题描述】:

AJAX 实际上是指异步 Javascript 和 XML。这个术语的产生是因为(据我所知)开始这个过程的第一批人通过 XML 将数据从服务器传输到客户端。最近(自从我实际开始使用它以来),JSON 已经出现并且似乎是 XML 的真正替代品。根据我(可能是微不足道的)测试和经验,JSON 更小、更容易,并且更适合传输数据。

所以我的问题是:您使用哪个与服务器/客户端通信(可能是为什么)?或者,您听说过哪些“最佳实践”(以及为什么)?

谢谢大家!

【问题讨论】:

  • 你能解决这个问题吗?这似乎是关于 XML 与 JSON 的问题。 “定义”和“实施”这两个词似乎具有误导性和混淆性。
  • @S.Lott:修正了标题。另外,谢谢你的链接,我还没有完整地阅读它,但我会的。

标签: xml ajax json definition


【解决方案1】:

我们通常更喜欢 xml,因为它比 JSON 有一些优势,例如:

  • 可以在 json 没有验证器的情况下验证 XML
  • json 中没有命名空间
  • Xml 不像 json 那样可扩展
  • Json 通常被认为是不安全的

另一方面json本身也有它的优势:

  • Json 更简单
  • 在客户端更容易处理
  • 出现问题时可以轻松进行调试

最后,这取决于您要开发什么,对于面向数据的东西,我 更喜欢json。

【讨论】:

    【解决方案2】:

    哪个更好用取决于具体应用/需求。在浏览器端 JSON 是更好的选择,而在服务器端文件 XML 是更好的选择。为正确的工作使用正确的工具。 JSON 更倾向于数据,而 XML 更倾向于文档。浏览器 Javascript 代码原生支持 JSON。

    有关这篇文章的更多详细信息,请参阅一个链接,该链接将每个链接与示例进行了更好的比较。 http://codebucket.co.in/which-one-is-better-xml-or-json/

    【讨论】:

      【解决方案3】:

      JSON 与 XML 似乎是一场持续的争论——我宁愿选择 JSON,因为它更适合支持 mashup 和 AJAX 小部件的 Web 服务,因为它本质上是序列化的 Javascript 对象(因此易于与 Javascript 一起使用)。

      您可以在JSON or XML, Which Format to Choose?The AJAX response: XML, HTML, or JSON? 上找到 JSON 和 XML 优缺点的一些广泛比较

      【讨论】:

        【解决方案4】:

        我更喜欢尽可能使用 JSON:

        1. 它已经以 Javascript 对象的形式出现,因此您只需在其上调用 eval() 即可获取其所有数据。
        2. JSON 是 Javascript,因此对于已经了解 JS 但没有复杂的 XML 的人来说,理解起来更快。
        3. 在浏览器中,您不必经历解析 XML 对象的痛苦。 (您也不必在服务器上构建一个,但无论如何您都必须创建 JSON。)
        4. 这是一种更紧凑的数据传输方法。

        【讨论】:

          【解决方案5】:

          这些天,我尽可能倾向于使用 JSON。与客户端编码结合使用时,它确实感觉更轻、更“自然”。

          安全最佳实践:切勿在不对收到的字符串进行检查的情况下盲目评估 JSON,因为您可能正在执行有人“放置”到 JSON 字符串中的任意代码。

          Douglas Crockford 在使用 JSON 时写了一个很好的 set of security principles

          【讨论】:

            【解决方案6】:

            当我看到 AJAX 这个词时,我总是微笑。我微笑是因为我早在 XMLHTTP 出现之前就开始使用相同的技术,更不用说 AJAX。

            我们在 IE 中的 Intranet 应用程序上做了与 AJAX 相同的事情,但使用 VBScript 和 Java 小程序而不是 XMLHTTP。我们使用了类似于 JSON 的东西,但使用的是 VBScript 语法。

            【讨论】:

              【解决方案7】:

              理论上,由于验证,XML 会很快变得很好。在实践中,您不能在客户端验证 DTD 或架构是否合理(或在大多数情况下)。试试看你就知道了。

              XML 还受到其冗长和客户端消耗的影响。除非您打算使用 XSLT 或其他东西并直接使用接收到的数据包,否则您必须像制作的 DOM 一样将数据切碎。

              最后,XML 在完成之前无法合理查看(至少在客户端),因此您无法进行部分检查。公平地说,JSON 在那里也会遇到挑战,具体取决于它的结构。

              鉴于消费环境(主要是 JavaScript)JSON 具有明显优势。在 Ajax: The Complete Reference (http://ajaxref.com) 的第 4 章中对这种选择以及 YAML、CSV、base64 编码数据、HTML 片段等其他内容进行了大量讨论,其中仅涉及数据类型。示例证明不易于处理,特别是在鲜为人知的情况下。如果我必须选择一个 JSON 就可以了,但坦率地说,对于 Ajax 小 HTML 片段的某些用途(因为它是 slap and go)是这样做的方法。

              【讨论】:

                【解决方案8】:

                您也可以只生成 html 并将该输出直接用于您的应用程序。 XML 非常冗长,由于安全性,JSON 在处理时需要额外注意。

                没有真正的“最佳实践”,就我个人而言,如果我要在 JSON 和 XML 之间进行选择,我会使用 JSON。尽管如果您使用 XML,您将有一些有趣的查询可能性。

                【讨论】:

                • “如果您使用 XML,可能会出现有趣的查询”...比如什么?我使用 JSON 开始 AJAX,因为它似乎是最好用的,所以我对 XML 的熟悉程度不如我应该熟悉的程度。如果您能举个例子或详细说明这一点,那就太好了。谢谢。
                • 借助 XML,您可以获得一些 XPath 机会,并且您可以使用例如 JQuery 选择器。不过我没有这方面的经验。
                【解决方案9】:

                我认为关于 JSON 与 XML 的争论表明 JSON 可以是一个最佳实践。如果曾经,我认为客户端-服务器传输速度不会很快成为一个问题。所以我认为 JSON 会在更小的问题上胜出单独(我相信 JSON 在发送到哪个服务器方面也具有灵活性,但这自然会涉及到前面提到的安全问题)

                也许我们应该开始称它为“AJAWX”(没有 Xml 的异步 JAvascript)。

                【讨论】:

                  【解决方案10】:

                  我的选择是 JSON。

                  因为:

                  • 它要快得多。您只需从响应中评估 JSON 代码,而不是解析 XML。
                  • 它需要更少的代码。 eval() 小于 XML 解析器代码。
                  • 客户端和服务器之间的流量(要传输的数据量)更少,因此处理速度更快
                  • 它更具可读性

                  【讨论】:

                  • 好点,我建议每个句子都大写。此外,一个项目符号提到它是“一种具有可疑安全性的杂物,因为函数调用最初并不意味着携带消息”
                  • 虽然我也更喜欢 JSON,但前两点并不正确:我很确定浏览器的内置 xml 解析器比它的 JS 解释器更快。
                  猜你喜欢
                  • 1970-01-01
                  • 2018-04-10
                  • 2023-04-01
                  • 1970-01-01
                  • 2012-06-21
                  • 2011-03-20
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-05-17
                  相关资源
                  最近更新 更多