我是全新的,我正在学习这个javascript。我正在构建一个应用程序/机器人,但我坚持这个。我没有写这个代码只是在网上找到它。因此,当命令开始执行时,我得到了这个" catch"错误,但不知道什么是问题。它不会显示的大多数歌曲,但在浏览器中访问链接工作正常:这是代码中给出错误的部分。
if (quizState) {
//Load current song stats
console.log(newMedia.author + " " + newMedia.duration);
var XMLsource = 'http://musicbrainz.org/ws/2/artist/?query=artist:' + newMedia.author.replace(/ /g, "%20") + '&limit=1';
simpleAJAXLib = {
init: function() {
this.fetchJSON(XMLsource);
},
fetchJSON: function(url) {
var root = 'https://query.yahooapis.com/v1/public/yql?q=';
var yql = 'select * from xml where url="' + url + '"';
var proxy_url = root + encodeURIComponent(yql) + '&format=json&diagnostics=false&callback=simpleAJAXLib.display';
document.getElementsByTagName('body')[0].appendChild(this.jsTag(proxy_url));
},
jsTag: function(url) {
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', url);
return script;
},
display: function(results) {
try {
quizCountry = results.query.results.metadata["artist-list"].artist.area.name;
quizYear = results.query.results.metadata["artist-list"].artist["life-span"].begin.match(/\d{4}/);
quizBand = results.query.results.metadata["artist-list"].artist.name;
if (quizCountry != "" && quizYear != "") {
console.log(quizCountry + " " + quizYear);
API.sendChat("U kojoj godini je/su " + quizBand + " osnovan/i?");
}
} catch (e) {
console.log("Error: " + e.description);
API.sendChat("Žao nam je, čini se da musicbrainz ne prepoznaje ovaj bend ili umjetnika. Nastavit ćemo za vrijeme sljedeće pjesme.");
console.log("country or year not known");
}
}
}
simpleAJAXLib.init();
}

答案 0 :(得分:0)
如果http://musicbrainz.org/ws/2/artist/?
上的搜索返回多个艺术家,则该对象将返回
results.query.results.metadata["artist-list"].artist
因此,要访问数据,它将是
quizCountry = results.query.results.metadata["artist-list"].artist[0].area.name;
quizYear = results.query.results.metadata["artist-list"].artist[0]["life-span"].begin.match(/\d{4}/);
quizBand = results.query.results.metadata["artist-list"].artist[0].name;
所以,你需要检查是否
results.query.results.metadata["artist-list"].count > 1
并正确更改您的代码
e.g。
if(results.query.results.metadata["artist-list"].count > 1) {
quizCountry = results.query.results.metadata["artist-list"].artist[0].area.name;
quizYear = results.query.results.metadata["artist-list"].artist[0]["life-span"].begin.match(/\d{4}/);
quizBand = results.query.results.metadata["artist-list"].artist[0].name;
} else {
quizCountry = results.query.results.metadata["artist-list"].artist.area.name;
quizYear = results.query.results.metadata["artist-list"].artist["life-span"].begin.match(/\d{4}/);
quizBand = results.query.results.metadata["artist-list"].artist.name;
}
虽然,如果您在回复中有多位艺术家,您可能想完全改变您的逻辑 - 但上述内容应该可以解决您的错误