json - 发生错误,API SoundCloud自定义播放器

标签 json error-handling soundcloud

嗨,我试图在发生错误时捕获错误,但我对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中的错误。

最佳答案

假设您使用的是jQuery> 1.5版本,则下面的结构会更适合。

仅当从服务器返回适用的HTTP代码(例如500/404/400)时,不仅调用返回空数据集时,还会成功执行HTTP 200响应时,才会调用fail方法。

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);};

关于json - 发生错误,API SoundCloud自定义播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17272941/

相关文章:

javascript - 将不同的数据推送到多个对象会导致相同的数据被推送到所有对象

json - 配置单元查询嵌套的json

javascript - 如何使用 dojo 对 Json 中的不同值进行计数或求和

python - Python 中的“display_formatter”属性错误

php - 获取身份验证 token 时 Soundcloud 错误 rate_limit

json - 使用 NSURLSession 时如何访问数据?

c++ - 从 C++ 传输错误字符串 => C 包装的 API(多线程)

php - 文件获取内容 : get full response even on error

javascript - Waveform.js - 波形中较粗线的算法

javascript - 如何播放 SoundCloud RTMP 流?