【问题标题】:AJAX response: sugestions for JSON format?AJAX 响应:对 JSON 格式的建议?
【发布时间】:2011-04-29 09:47:57
【问题描述】:

假设我通过 Ajax 提交表单并需要服务器的响应:

  • 通过/失败指示器
  • 失败时,会显示包含相关字段 ID/名称等的验证错误列表

这种结构的 JSON 格式是否有标准或最佳实践?如果是这样,我想尝试坚持下去,而不是想出我自己的约定。

【问题讨论】:

  • 我从未听说过标准格式。

标签: javascript xml ajax json


【解决方案1】:
{
    "result": "false", 
    "fields":
        [
             {"id": "element1", "name": "element1"},
             {"id": "element2", "name": "element2"},
             {"id": "element3", "name": "element3"}
        ]
}

【讨论】:

  • 我推荐一种不同的结构,它是“消息”而不是“字段”,并且该集合中的每个对象都可能有一个与之关联的字段。并非从服务器返回的每条消息(无论是错误消息、成功消息还是其他)都将与“字段”相关联。
【解决方案2】:

嗯。我不知道标准,但您可能只想做类似的事情

{
    "result": "false",
    "errors":
        [
             {"errorCode": "1234", "errorText": "malformed address"},
             {"errorCode": "5678", "errorText": "no username"}
        ]
}

【讨论】:

  • 这是我们在工作中所做的事情。我不确定自己的推理:P 我假设它是针对一般验证失败的情况,没有特定的错误映射到这种情况......但话又说回来,这似乎值得一个包罗万象的错误代码。我不知道他们为什么这样做:)
  • 恕我直言,它的冗余而不是容错。在这种情况下,在访问它们之前检查错误数组是否具有值是恕我直言。否则你必须在访问中处理异常
  • 是的。真的。我之前添加了关于冗余的评论,但我将删除 hasErrors 标志。
【解决方案3】:

Peter Bui 的提案格式为:http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery

{
  status: "ok|redirect|error",
  to: "http://www.redirect-url.com",
  html: "<b>Insert html</b>",
  message: "Insert some message here"
}

【讨论】:

    【解决方案4】:

    OmniTI 有一个不错的标准,我喜欢并推荐:http://labs.omniti.com/labs/jsend

    {
        status : "success",
        data : {
            "posts" : [
                { "id" : 1, "title" : "A blog post", "body" : "Some useful content" },
                { "id" : 2, "title" : "Another blog post", "body" : "More content" },
            ]
         }
    }
    

    我通常使用变体:

    {
        status : "error",
        messages : {
            "some_field" : "message"
        }
    }
    

    【讨论】:

    • 这是一个老问题,但值得更新。现在我是 JSON:API 的粉丝,纯粹基于 JSON 的结构化、自我描述、面向资源的 API。如果您将表单请求视为创建资源,无论它可能是什么,那么 JSON:API(只是基础知识)为您提供了构建更复杂 API 的良好基础。
    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多