2016-04-25 9 views
0

私は、RESTウェブサービスを呼び出してJSON答えを得るHTMLを持っています。 間違ったパラメータを入力すると、問題なくエラーを捕捉できますが、JSONの結果がnullになることがあります。どのように私はその状況を把握できますか?"Uncaught TypeError:getJSON呼び出しでプロパティ 'prop' of undefinedを設定できません。

マイHTML:

<div id="divname"></div> 

私のjavascript:

$.getJSON(URL, function(data) { 
      $('#divname').html(data.result[0].dest[0].pred[0].time); 
    }) 
.done(function() { alert('getJSON request succeeded!'); }) 
.fail(function(jqXHR, textStatus, errorThrown) { alert('getJSON request failed! ' + textStatus); $('#divname').html('Wrong Parameter.'); }) 
.always(function() { alert('getJSON request ended!'); }); 

良いJSONの結果は次のようになります:

{ 
    "result": [{ 
     "string01": "104", 
     "string02": "104 - blablabla", 
     "string03": "104", 
     "string04": "blobloblo", 
     "string05": "blablabla", 
     "dest": [{ 
      "pred": [{ 
       "time": 1461348846, 
       "sec": 102, 
       "min": 1, 
       "string11": "514-String", 
       "string12": "Some String", 
       "string13": "Some other String", 
       "number": 0 
      }] 
     }] 
    }] 
} 

しかし、時には、表示するデータがないとき、私はこのような何かを得る:

{ 
    "result": [{ 
     "string01": "104", 
     "string02": "104 - blablabla", 
     "string03": "104", 
     "string04": "blobloblo", 
     "string05": "blablabla", 
     "dest": [{"pred":[]}] 
    }] 
} 

私はクロームコンソールで以下の取得:

Uncaught TypeError: Cannot set property 'time' of undefined 

これが失敗している理由を私は理解しますが、私は失敗しているHTMLで表示するには、このエラーをキャッチする方法がわかりません。

+0

ちょうどあなたがしようとする前に、親プロパティがあるかどうかを確認しますプロパティを設定します。 – Pointy

答えて

1

PREDの長さのチェックを追加します。

また
$.getJSON(URL, function(data) { 
    if (data.result[0].dest[0].pred.length) { 
     $('#divname').html(data.result[0].dest[0].pred[0].time); 
    } else { 
     // handle the case with empty pred here 
    } 
    }) 
.done(function() { alert('getJSON request succeeded!'); }) 
.fail(function(jqXHR, textStatus, errorThrown) { alert('getJSON request failed! ' + textStatus); $('#divname').html('Wrong Parameter.'); }) 
.always(function() { alert('getJSON request ended!'); }); 

、predがいるかどうかを確認[0]未定義です:

$.getJSON(URL, function(data) { 
    if (typeof data.result[0].dest[0].pred[0] !== 'undefined') { 
     $('#divname').html(data.result[0].dest[0].pred[0].time); 
    } else { 
     // handle the case with empty pred here 
    } 
    }) 
.done(function() { alert('getJSON request succeeded!'); }) 
.fail(function(jqXHR, textStatus, errorThrown) { alert('getJSON request failed! ' + textStatus); $('#divname').html('Wrong Parameter.'); }) 
.always(function() { alert('getJSON request ended!'); }); 
+0

ありがとうございました:) – Rodrick

+0

喜んでお手伝いします - 他に何か必要があれば教えてください! – TAGraves

+0

ちょっと@TAGravesどのようにエラーレスポンスを捕まえることができますか?この場合、bad paramenterを入力するとtextStatus = "error"とerrorThrown = "Bad Request"ですが、URLから "Param BLABLA not valid an valid"と表示されます。どのように私はそのエラーをキャッチできますか? – Rodrick

関連する問題