2014-08-28 80 views
2

我想使用AJAX和SoundCloud API來獲取用戶的曲目。爲什麼我會得到Uncaught SyntaxError:意外的令牌非法

jQuery.ajax({ 
       url: 'http://api.soundcloud.com/resolve?url=http://soundcloud.com/[SOME USER]/tracks/&format=json&consumer_key=[MY KEY]&callback=?' 
      , dataType: 'jsonp' 
      , success: function(data) { 
       console.log(data); 
      } 
      }); 

我可以看到Chrome瀏覽JSON數據,但我得到的錯誤

Uncaught SyntaxError: Unexpected token ILLEGAL 

在控制檯中。

問題可能是json文件是一個json數組。那可能是錯誤嗎? 如果是的話,我該如何將數組轉換爲單個對象?

+0

請告訴我數據的內容 – Ahmad 2014-08-28 12:16:38

+0

請張貼的JSON的內容! – 2014-08-28 12:17:15

+0

試一試;)[點擊這裏!](http://api.soundcloud.com/resolve?url=http://soundcloud.com/mrsuicidesheep/tracks/&format=json&consumer_key=524c5acd5e5c401654259eb487c4bfb2&callback=?) – brighthero 2014-08-28 12:18:06

回答

4

問題是軌道ID#159500192('Summer Chords Pt. 2' (Electro House Mix))中的描述字段具有不可見的字符,這些字符在JavaScript字符串中不合法,所以當JavaScript解析器嘗試將JSONP響應作爲腳本運行時會發生窒息。 SoundCloud應在通過JSONP提供內容時對這些值進行編碼。

因爲SoundCloud支持CORS,所以根本不需要使用JSONP。你可以簡單地直接請求文件,通過移除callback=?參數和使用dataType: json(不jsonp):

jQuery.ajax({ url: "https://api.soundcloud.com/resolve?url=http://soundcloud.com/[USER]/tracks/&format=json&consumer_key=[KEY]", 
       dataType: 'json', 
       success: function(d) { console.log(d); } 
}); 
+0

我有一個非常類似的問題。有沒有任何工具來檢查JS字符串中的非法隱形字符? – 2015-04-21 19:12:38

相關問題