处理AJAX GET JSON请求中缺少的属性/键

时间:2015-08-19 14:57:11

标签: ajax json

有时从AJAX请求调用的JSON对象将缺少我想在表中显示的值的键/属性。问题是当一个键丢失时,它会导致在控制台中记录“TypeError:无法读取未定义的属性'名称”并破坏我的代码。我尝试使用||声明但是没有用。请参阅下面的代码段:

function getNextObject() {
  $.ajax({
    url: "http://scrapi.org/object/" + randomNum,
    success: function(data) {
      var timeline = data.timelineList[0].name || "not available";
      var medium = data.medium;
      var culture = data.culture;
      var geo = data.geography;
      var date = data.dateText;
      var gallery = data.galleryLink;
      var title = data.title;
      var artist = data.primaryArtist.name || "not available";
      var image = data.currentImage.imageUrl;

PrimaryArtist和timelineList并不总是包含在JSON对象中,导致错误并导致代码中断。我怎么能克服这个?

1 个答案:

答案 0 :(得分:1)

问题是你的代码试图获取这些变量的.name,而变量本身可能是空的。

您可以围绕变量iftimelineList

构建primaryArtist

你尝试这些替代品怎么样:

var timeline = data.timelineList ? data.timelineList[0].name : "not available";
...
var artist = data.primaryArtist ? data.primaryArtist.name : "not available";