2017-12-14 22 views
2

私はajaxの学習を始めました。私はAPIを持っています。 APIは2種類のレスポンスを返す 1.データがあるときとシステムにデータがないときの処理 2.サーバーエラーが発生したときのエラー(例外)。 APIドキュメントでjquery ajaxのデータがないときにエラーメッセージを表示

私はこの

フィールドのようなものがある - 成功 タイプ - ブール レスポンスステータス - 真/偽

フィールド - データ タイプ - 私が持っているデータ・オブジェクト内のオブジェクト

を他のフィールド。私がしたいことは簡単です。それがシステムにあるときにデータを表示し、データがないときにエラーメッセージを表示します。

データがシステム

{ 
"success": true, 
"data": { 
    "office_id": 1, 
    "office_type": "s", 
    "registrar_name": null, 
    "registrar_mobile": null, 
    "registrar_email": null 
    } 
} 

と正しい応答データがシステムにありません

{"success": true} 

又は

{ 
    "success": true, 
    "err": "error message" 
} 

にあるときにドキュメントによれば、これはサンプル正しい応答でありますこれは私がこの時点で得たものです。システムでmydataを見つけたら、フィールドを適切に表示します。しかし、システムにデータがない場合、私は定義されていません。このコードで何が問題になっていますか?

$('#test').on('click', function(){ 
    $.ajax({ 
    dataType: 'json', 
    type:"GET", 
    url:"http://mywebsite.com/api/mydata", 
    success: function(response, data) { 
     console.log(data.data); 
    }, 
    err: function(response, data) { 
     console.log("no data"); 
    } 
}); 
}); 
+1

'success == false'のとき' data'というプロパティはなく、 'success'と' err'だけです。あなたは何を期待していますか? – George

+2

ここにあります: 'success:function(response、data)' - このコールバック関数は最初のパラメータとして応答を取得するだけなので、 'data'は次の行で定義されません。 'data'をここで' console.log(response.data);の次の行に変更します。しかし、response.dataが定義されているかどうかを前に確認してください – Jeff

+0

このhttps://jsfiddle.net/Micio/kvusadfg/を見てみてください。エラーはありませんエラー:エラーではありません – Leo

答えて

1

まずのみ(この場合はdataという名前の)2番目のパラメータはtextStatusなりますthe documentationに応じて一つのパラメータを持っているにあなたの成功の機能を変更します。

そして、あなたはちょうどあなたがデータを持っているか、応答がエラーを持っている場合

success: function (response) { 
    if (response.err != undefined) { 
     console.log("Error"); 
    } 

    if (response.data != undefined) { 
     console.log("There is data"); 
    } else { 
     console.log("No data") 
    } 
} 

あなたの例のデータに誤りがまだsuccess:trueを持っているとの応答に注意してくださいかどうかを調べるために、応答のプロパティを確認することができますこれは私には少しばかげているようですが、エラーがあれば成功しないはずです。

0

希望しますか?

success: function(response, data) { 
    if(data.data == undefined) 
    { 
     //There is no data 
    } 
} 
+0

システムにデータがある場合でもメッセージは表示されません – MMPL1

+0

"システムにデータがある場合"私はあなたが何を意味するのかはわかりませんが、Ajaxリクエストがエラーの原因になっている場合は、エンドポイント、パラメータなどを確認する必要があります。 – lucky

1

データ利用可能利用

{ 
"success": true, 
"data": [{ 
    "office_id": 1, 
    "office_type": "s", 
    "registrar_name": null, 
    "registrar_mobile": null, 
    "registrar_email": null 
    }] 
} 

ときデータは利用できません使用

{ 
"success": true, 
"data":[] 
} 

たときに、クライアント側のエラー使用

{ 
"success": false, 
"error": {code:"111",message:"Error message"} 
} 

すべての3210

チェックとして怒鳴る

success: function(response, data) { 
     var retrivedData=[]; 
     if(data.success && data.data.length){ 
     retrivedData=data.data;//or use data.data[0] 
     }else if(data.success && data.data.length==0){ 
      console.log("No DATA") 
      }else { 
      console.log("Error in Data",data.error.message); 
      } 

    } 
関連する問題