V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
KyL
V2EX  ›  问与答

jQuery 如何区分正常 Json 和错误信息 Json?

  •  
  •   KyL · 2016-07-14 16:27:31 +08:00 · 2260 次点击
    这是一个创建于 3088 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 URL 返回 Json ,

    如果成功,则返回正常 Json 格式

    [
    	{id:"1", code:"123"},
        {id:"2", code:"456"}
    ]
    

    如果错误,则返回报错 Json 格式

    [
    	{error_code:"676", error_msg:"this is an error"}
    ]
    

    请问 jquery 应该如何区分这两种情况呢? 还是有其他的一些常用的设计思路?本人刚接触 JS ,求教。

    11 条回复    2016-07-15 00:59:40 +08:00
    zdhxiong
        1
    zdhxiong  
       2016-07-14 16:30:53 +08:00
    if(typeof data.error_code === 'undefined'){
    //正常
    }
    shyling
        2
    shyling  
       2016-07-14 16:33:59 +08:00 via iPad
    if(single.error_code){
    //error
    }
    baby4free
        3
    baby4free  
       2016-07-14 16:34:56 +08:00
    建议统一消息格式。
    {
    code: 200,//表示成功,其他 code 都不成功
    result: {},//正确的返回内容
    errormsg:''//错误信息提示
    }
    crysislinux
        4
    crysislinux  
       2016-07-14 16:37:52 +08:00
    http header 错误了就传回 4xx ,这种情况 ajax 的 callback 不会走跟 2xx 的一样的路线。
    kiwi95
        5
    kiwi95  
       2016-07-14 16:48:46 +08:00
    API 的返回要统一格式,都加一个状态吗和消息字段,数据放到一个单独的键
    mkeith
        6
    mkeith  
       2016-07-14 17:15:54 +08:00
    @crysislinux api 错误最好还是不要和 http 错误混起来用吧
    bdbai
        7
    bdbai  
       2016-07-14 17:24:51 +08:00 via Android
    @mkeith 按照 REST 的说法,应该把 HTTP 错误当成资源错误。
    BOYPT
        8
    BOYPT  
       2016-07-14 17:34:35 +08:00
    先不争论 http 错误是否应该和业务错误混起来;

    $.ajax()
    .done(function(ret){ // ret is json })
    .fail(function(xhr){ var json = JSON.parse(xhr.responseText); }));
    bdbai
        9
    bdbai  
       2016-07-14 17:41:32 +08:00 via Android
    @BOYPT 不混起来的话,不管成功与否都会返回 2xx ,被 done 处理。
    iyangyuan
        10
    iyangyuan  
       2016-07-14 18:48:39 +08:00 via iPhone
    格式不标准造成的困扰
    sunjourney
        11
    sunjourney  
       2016-07-15 00:59:40 +08:00 via iPhone
    Json 放到 response body 里,错误看状态码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2360 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:59 · PVG 23:59 · LAX 07:59 · JFK 10:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.