2013-06-24 56 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

相關問題