私の質問を言い換えさせてください。Last.FM からの JSON データを解析する必要があります。このデータは、ルックアップの成功に応じて変化する可能性があります。つまり、JSONP ノードは検索ごとに異なる可能性があります。問題は、存在しないノードをルックアップすると、ルックアップ全体が失敗し、JSON オブジェクト内のすべてのデータが失われることです。この種のエラーをトラップして、エラーの後に JSON データのトラバースを続行する方法がわかりません。
/********** Last FM Scrobbler - get album JSON details ***********/
function refreshArtwork(artist, track) {
$.ajax({
type: 'GET',
url: 'http://ws.audioscrobbler.com/2.0/',
data: {
method: 'track.getInfo',
api_key: 'c88cc53549bec0e9f246f056dc05a745',
artist: artist,
track: track,
format: 'json',
},
dataType: 'jsonp', //must be JSONP for CORS
error: lstError,
success: getLastfm
});
}
/* success: parse album XML from LastFM scrobbler */
function getLastfm(json) {
//alert(json.track.wiki.summary); // wiki summary
var lstArtist = (json.track.artist['name']); // artist
var lstTitle = (json.track.name); // Title
var lstAlbumart = (json.track.album.image[3]['#text']);// 0=small, 1=medium, 2=large, 3=xlarge
//var listWikis = (json.track.wiki.summary); // WIKI summary
var lstAlbum = (json.track.album.title); // album
// if no artist info then error in name
if (lstArtist ===null) {
$('#response').append('<li style="color:red">' + 'No Artist Match on Last.FM!' + '</li>');
lstError();
}
// if no album art info then error in album URL
if (lstAlbumart ===null) {
$('#response').append('<li style="color:red">' + 'No Album Art URL Match on Last.FM!' + '</li>');
lstError();
}
たとえば、アルバム タイトルが JSON データにない場合、他のノードにアクセスできません。lstTitle = (json.track.name); 欠落している場合、他のものは機能しません。