0

こんにちは、発生したときにエラーをキャッチしようとしていますが、Json に問題があります。トラックが完全にロードされているとき、成功の回答を受け取りましたが、クラッシュでは何もありません

$.getJSON(apiUrl, function(data, error) {
                index += 1;
                if(data.tracks){
                  playerObj.tracks = playerObj.tracks.concat(data.tracks);
                }else if(data.duration){
                  data.permalink_url = link.url;
                  playerObj.tracks.push(data);
                }else if(data.creator){
                  links.push({url:data.uri + '/tracks'});
                }else if(data.username){
                  if(/favorites/.test(link.url)){
                    links.push({url:data.uri + '/favorites'});
                  }else{
                    links.push({url:data.uri + '/tracks'});
                  }
                }else if($.isArray(data)){
                  playerObj.tracks = playerObj.tracks.concat(data);
                }
                if(links[index] && (index % 18) != 0){
                  var mod = index % 18;
                  loadUrl(links[index]);
                }else{
                  playerObj.node.trigger({type:'onTrackDataLoaded', playerObj: playerObj, url: apiUrl});
                  if (links[index]) {
                     loadMoreTracksData($player, links, key, index);
                  }
                }
              }).success(function() { console.log("second success"); }).error(function() { console.log("error"); });

このApiのエラーを正しく聞く方法を知っている人はいますか?

4

1 に答える 1

0

jQuery > 1.5 のバージョンを使用していると仮定すると、以下はより適した構造です。

fail メソッドは、該当する HTTP コードがサーバーから返された場合 (例: 500 / 404 / 400) にのみ呼び出されます。単に空のデータ セットが返された場合ではなく、成功した HTTP 200 応答が返された場合です。

var index = 0;

var processResponse = function(data) {
                index += 1;
                if(data.tracks){
                  playerObj.tracks = playerObj.tracks.concat(data.tracks);
                }else if(data.duration){
                  data.permalink_url = link.url;
                  playerObj.tracks.push(data);
                }else if(data.creator){
                  links.push({url:data.uri + '/tracks'});
                }else if(data.username){
                  if(/favorites/.test(link.url)){
                    links.push({url:data.uri + '/favorites'});
                  }else{
                    links.push({url:data.uri + '/tracks'});
                  }
                }else if($.isArray(data)){
                  playerObj.tracks = playerObj.tracks.concat(data);
                }
                if(links[index] && (index % 18) != 0){
                  var mod = index % 18;
                  loadUrl(links[index]);
                }else{
                  playerObj.node.trigger({type:'onTrackDataLoaded', playerObj: playerObj, url: apiUrl});
                  if (links[index]) {
                     loadMoreTracksData($player, links, key, index);
                  }
              }

var processError = function(error){
   console.log("Error:" + error); 
}

$.getJSON(apiUrl)
.done(function(data){ processResponse(data); })
.fail(function(error){ processError(error); })
.complete(function(xhr, status) {console.log(status);};
于 2013-06-24T10:39:23.317 に答える