2013-06-24 57 views
0

你好我试图在其发生时赶上一个错误,但我有一个问题,使用JSON 当曲目加载完美,我收到一个成功的答案,但在发生碰撞我没有什么错误,API的SoundCloud自定义播放器

$.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。

+0

有什么网址? – nickf

+0

这是任何soundcloud api网址,带有错误,如var url ='https://api.oundcloud.com/tracks.json?client_id=YOUR_CLIENT_ID';在这里,你的soundcloud没有'S',或者当歌曲不存在时 – hafid

+0

好吧,这与soundcloud的api没有什么关系,那么它是什么?应该被标记为'oundcloud':p – nickf

回答

0

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

的故障时适用的HTTP代码从服务器返回的方法将仅称为(例如四百○四分之五百/ 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);}; 
+0

我编辑我的代码,但它仍然无法正常工作。我理解HTTP状态代码的返回,但我的这个返回比我在Json的新手更快,但是当方法.done()发生错误时发生错误。 – hafid

+0

所以响应是HTTP 200,但JSON对象要么表示JSON内的错误,要么可能发生超时。我已经用完整的方法更新了我的答案,可以为您提供关于发生什么错误的进一步线索。 – Sparko

+0

是否有可能在JSON对象之前捕获HTTP状态?因为我在控制台中看到来自jquery的“GET 404 not found”。 – hafid

相关问题