有时从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对象中,导致错误并导致代码中断。我怎么能克服这个?
答案 0 :(得分:1)
问题是你的代码试图获取这些变量的.name
,而变量本身可能是空的。
您可以围绕变量if
和timelineList
primaryArtist
你尝试这些替代品怎么样:
var timeline = data.timelineList ? data.timelineList[0].name : "not available";
...
var artist = data.primaryArtist ? data.primaryArtist.name : "not available";