我遇到了问题。当查询查找子类别时,js得到错误。
"Uncaught TypeError: Cannot read property 'source' of undefined
at Object.success (load.js:21)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at y (jquery.min.js:4)
at HTMLScriptElement.b.onload.b.onreadystatechange (jquery.min.js:4)"
在我看来问题是找到标题:类别:(随机名称)或更好的SUBCATEGORY。有一种方法可以忽略它吗?并且可以拍摄没有错误的图像?
我用api维基百科创建了观众类维基百科的意大利总理。
function getImages(pageid,title){
$.ajax ({ //caricamento dinamico
url: "https://en.wikipedia.org/w/api.php",
data: {
format: "json",
action: "query",
prop:"pageimages",
titles:title,
pithumbsize:300,
redirects:"1" // utilizzato nel caso il termine inserito non sia specifico, viene così effettuato il redirezionamento
},
dataType: 'jsonp',
async: false,
success: function (data)
{
if (data.error){
alert(data.error.info);
return false;
}
console.log(data);
var src=data.query.pages[pageid].thumbnail.source;
return src;
console.log(data.query.pages[pageid].thumbnail);
}
});
}
function renderPage(title, contentImage){
var newChild = document.createElement("div");
newChild.className = "item"; //<div class="item"></div> aggiunge la classe al tag div creato in precedenza
newChild.innerHTML = title; //<div class="item">playerName</div> aggiunge il contenuto di playername all'intenro del tag
newChild.style.dysplay="none";
var src=contentImage;
console.log(src);
newChild.style.backgroundImage='url('+src+')';
playersContainer.appendChild(newChild);
}
function firstCallAPI(){
$.ajax ({ //caricamento dinamico
url: "https://en.wikipedia.org/w/api.php", //in questa prima chiamata si prende tutto il testo dalla pagina di wikipedia e si da una formattazione
data: {
format: "json",
action: "query",
generator:"links",
cmtitle: "Category:Prime_Ministers_of_Italy",
list:"categorymembers",
redirects:"1", // utilizzato nel caso il termine inserito non sia specifico, viene così effettuato il redirezionamento
cmlimit:500
},
dataType: 'jsonp',
success: function (data)
{
if (data.error){
alert(data.error.info);
return false;
}
var res= data.query.categorymembers;
var contentImages = new Array();
var arrayIdpages = new Array();
for(var x=0; x < res.length; x++){ //creo un dizionario e una lista per ordinare le immagini in ordine cronologico (ordine per idPages)
pageid=res[x].pageid;
var src = getImages(pageid,res[x].title);
dizImage = {'idpage':pageid, 'contentImages': src, 'title': res[x].title}
contentImages.push(dizImage);
arrayIdpages.push(pageid);
}
arrayIdpages.sort();
for (var i = 0; i < arrayIdpages.length; i++) {
renderPage(arrayIdpages[i].title, arrayIdpages[i].contentImages)
}
}
});
};
答案 0 :(得分:0)
错误是在行var src=data.query.pages[pageid].thumbnail.source;
处抛出,错误告诉您source
对象上不存在属性data.query.pages[pageid].thumbnail
。我建议删除该行和return src
行,因为它会阻止您的第二个console.log
被解雇 - 这可能有助于您进一步诊断问题。