我希望有人能帮助我完成这个遍历所有json对象的循环,然后从该对象获取特定数据。
我一直遇到同样的问题 -
我正在寻找缩略图的网址。 .each函数将遍历JSON并获取所需的数据。但如果有一个对象没有缩略图属性,那么我得到一个“未捕获的TypeError:无法读取属性'完整'的未定义”...
这是可以理解的,因为那里什么都没有。所以我想做一个检查,确保它首先具有属性,如果是,则获取数据,如果没有,则它将进入json文件中的其他位置以获取数据。
我已经包含了一小段我的ajax调用和Jquery循环。我已经在问题区域中添加了注释,并且我已经链接了JSON文件以供您查看/使用。
任何帮助将不胜感激!
代码 -
$("#search-btn").click(function (e) {
var userText = $.trim($('#searchArea').val());
$('.full-post-img').css('display', 'none');
$('.full-post-text').css('display', 'none');
$('#op').attr('checked', false);
$.getJSON('http://www.capetownetc.com/api/get_search_results/?search=' + userText, {
srsearch: userText
, action: "query"
, list: "search"
, format: "json",
},
function (data) {
if(userText.length === 0){
$("body").append("<p class='results'>Please enter a keyword</p>");
$('#sLoad').css('opacity', '0');
}
else{
$("#swipe").empty();
$.each(data.posts, function (i, item) {
// $('#sLoad').css('opacity', '0');
//EXCERPT
var ex = item.excerpt;
var maxLength = 100;
ex = ex.substr(0, maxLength);
//THUMBNAIL
//***PROBLEM AREA***
var imgThumb1 = item.thumbnail_images.full.url;
//So on certain keywords that are being searched, the JSON object might not have the "thumnail_image" property, so it's undefined and breaks the rest of my code, so then it must go somehwere else and get it. (Probably done with a if/else statement"
//CATEGORY
var cat = (item && item.categories && item.categories[0] && item.categories[0].title) || userText;
if(cat.hasOwnProperty(i)){
console.log('Is valid');
}
console.log(cat);
$("#swipe").append('<div class="p1 full-post-text"><a class="p1 link-click" id="post2" target="_blank"></a><div class="p1 text-post-img"><span class="p1 card-img1" id="p1Img" style="background-image:url(' + imgThumb1 + ');"></span><a class="p1 post-cat">' + cat + '</a> </div><div class="p1 full-text-info"><h2 class="p1 text-heading" id="p1Heading">' + item.title + '</h2>' + ex + '</div></div>');
$('p.results').css('display', 'none');
});
}
//SEARCH SUCCESS
$('#sLoad').css('opacity', '0');
$('#results').css('display', 'inline-block');
$('#search-img').css('display', 'none');
$('#iSlider').css('display', 'none');
$('#searchBR').css('display', 'block');
});
});
答案 0 :(得分:0)
您应该检查if (typeof item.thumbnail_images !== "undefined" && item.thumbnail_images != null) { //do magic here } else { //handle undefined or null cases }