【问题标题】:Getting HTML or JSON response from ajax call, Which is good? [closed]从 ajax 调用获取 HTML 或 JSON 响应,哪个好? [关闭]
【发布时间】:2014-03-01 15:09:25
【问题描述】:

我的项目中有一个功能,我已经实现了搜索功能。

在通过 ajax 提交表单时,我需要在一个部门中显示所有结果。

有两种方法可以做到这一点。

  1. 获取 JSON 数据作为 ajax 响应并将其绑定到 HTML 元素。
  2. 我还可以从 ajax 调用中获取完全格式化的 HTML 响应,并可以直接将其绑定到搜索页面上的结果 div。

那么哪种方式是值得推荐的?

【问题讨论】:

    标签: javascript jquery html ajax json


    【解决方案1】:

    我总是做 JSON 响应。对我来说,它看起来像是一种更加一致和灵活的方式,因为您可以返回更多数据而不仅仅是演示文稿。如果您仍想返回 HTML,您也可以通过 JSON 响应来实现:

    {
       error: false
       html: "<div>Done!</div>"
    }
    

    【讨论】:

      【解决方案2】:

      要使服务(服务器端脚本)最可重用,甚至将其制成API - 建议的方法是将JSON 数据(从数据模型转换而来)返回到前端,其中使用 JavaScript,您可以将数据填充到 HTML

      至于HTML - 你当然可以让服务器以HTML 的形式返回响应(在标题中设置正确的 mime 和内容类型),但这让服务器可以控制 UI 层和界面之间的分离并且服务器/数据库没有正确平衡...

      【讨论】:

        【解决方案3】:

        任何一个选项都可以,具体取决于您有多少 html 以及您需要对 HTML 进行多少服务器端处理。如果它只是一个 div 和一个需要插入的值,那么我说就用 JSON。 JSON 方法将更加轻量级(消耗更少的带宽,并将服务器的角色保持为可转移到非网页请求的 API)。

        如果你需要做大量的服务器端处理和组装,而你返回的实际上是一个子页面,那么你可以考虑从服务器端获取 html。在这种情况下,您可以读取和发送部分 html 文件(在相关的地方插入数据),而不是动态地从字符串构建 html。如果您有部分文件,那么您可以使用标准 html 编辑器对其进行编辑和检查,您可以轻松查看 html 布局,并将 UI 方面与业务逻辑分开。

        【讨论】:

          【解决方案4】:

          出于以下几个原因,我会将其作为 JSON 发送并构建 HTML 客户端:

          • JSON 负载会更轻,因此通过网络发送会更快

          • API 变得更加可重用(如果您想连接其他呈现不同的客户端等)

          • 如果您在客户端构建 HTML,那么利用模板库(例如 JQuery 模板)可能更容易,甚至更好,直接将数据绑定到 UI(例如 Knockout

          【讨论】:

            【解决方案5】:

            我也会将其作为 JSON 响应发送。

            1. 正如 emioliioicai 在他的代码中所建议的,使用 JSON,您可以轻松处理错误。例如:
            { 错误:真 错误消息:错误的参数 }
            1. 如果您定义了 HTML 客户端,将来您将能够在网站的另一部分使用相同的 AJAX 请求并以不同方式自定义 HTML。

            【讨论】:

            • 您始终可以将您的 HTML 放入一个 json 值中,并且仍然保留您的错误处理值
            • 是的,当然@Coulton :) 这取决于您的应用程序的结构:您可以决定是否喜欢在特定视图中定义html,每次都不同,或者将html放入json并拥有一个错误处理的通用视图。
            猜你喜欢
            • 2013-12-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多