【问题标题】:Javascript - Json or html?Javascript - Json 还是 html?
【发布时间】:2011-05-06 03:08:51
【问题描述】:

我有一个asp.net mvc 视图,它在jquery ajax 的帮助下更新了一个div。我应该使用返回 PartialView 或 json 的控制器吗?表演呢?

【问题讨论】:

标签: javascript jquery asp.net-mvc ajax json


【解决方案1】:

如果您希望用户能够在不同视图之间切换,并且这些数据可以简单地包含在页面加载中,那么只需包含 onload 然后隐藏/显示或加载为 json,然后根据需要填充。

如果这是一个非常简单的请求,需要根据需要进行更新,并且您不打算在应用中满足其他类似需求,那么只需返回 html。

但是,如果您正在发出提交数据或执行某些操作的请求,我喜欢返回带有错误布尔值、错误消息和内容/数据元素的一致 json 响应。

【讨论】:

    【解决方案2】:

    This ... question ... has ... been ... asked ... 之前:)

    【讨论】:

      【解决方案3】:

      对我来说,最酷的 AJAX 方式是返回纤细的数据包,而不是预渲染的 HTML。所以我会说使用 JSON 选项...

      ...但这一切都取决于您的需求。显示预渲染的 HTML sn-ps 要容易得多,所以如果您需要快速的东西,部分视图可能是更好的选择。

      但是这一切之前都已经讨论过了。所以看看这个链接:The AJAX response: XML, HTML, or JSON?。作者对 3 个主要的 AJAX 响应选项进行了很好的、独立于平台的总结,并说明了每个选项的优缺点。

      【讨论】:

        【解决方案4】:

        如果您正在压缩响应,则返回 HTML,否则返回 JSON 并构建 HTML 客户端。在理想情况下,您的服务器应该始终压缩响应,但您可能有一个配置不佳且不受您控制的服务器。然而,我的答案的重点是保持简单,因为在服务器端构建 HTML 和 JSON 之间的差异非常小。此外,对于使用过时机器的用户来说,在客户端上构建 HTML 可能会有点慢。 (或者浏览器...你知道我说的是浏览器...)

        注意:我的回答应该在最一般的情况下被理解。如果不查看您的技术堆栈和目标市场,我以任何其他方式回答都是错误的。请记住,编程中的大多数规则更像是指南。

        【讨论】:

        • 这两种方法应该通过 gzip 压缩/交付...所以这不应该是一个因素。
        • 为什么?您建议这种方式的具体原因是什么?
        • 啊,我明白你现在在说什么了。
        【解决方案5】:

        返回 HTML 很可能需要更多的服务器端处理,因为服务器必须进行 HTML 格式化。返回 JSON 将需要更多的客户端处理,因为客户端必须格式化 HTML。因此,性能是您希望在哪里进行处理的问题。如果您的服务器处于高负载状态,您可能希望将一些处理任务卸载到客户端。

        【讨论】:

          【解决方案6】:

          这取决于您要达到的目标。如果您正在创建一个“厚”客户端(即服务器只处理数据而浏览器处理其余的),那么服务器应该使用 JSON 进行响应。

          这听起来像你的情况,页面已经加载。考虑到这一点,JSON 是一种方法,然后让你的 JS 处理 UI 的处理。使用这两种方法都没有重大的性能权衡,但 IMO 的最佳做法是使用 JSON。

          【讨论】:

            【解决方案7】:

            我自己倾向于 JSON。原因是 JSON 为您提供了带回不同数据的灵活性。例如

            您可能会带回 100 个结果,以及一些关于这些结果是什么的元数据(关键字、分组等)以及关于还有多少结果可用、结果的新鲜程度、分页信息...

            同样,其他不相关的信息可能会返回 - 状态消息,“新邮件!”指标等

            如果返回纯 HTML,除了更新容器的 HTML 内容之外,您还可以限制其他选项来执行任何操作。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-23
              • 2019-05-02
              • 2011-03-22
              • 2010-10-30
              • 1970-01-01
              • 2012-11-23
              相关资源
              最近更新 更多