2014-01-31 30 views
2

我試圖發送一個JSONP請求tinysong API用下面的代碼JSONP請求TinySong始終未能

var url = "http://tinysong.com/s/calvin+harris?format=json&limit=3&key=api_key" 

function jsonpCallback(json) { 
    console.log(json); 
} 

var script = document.createElement('script'); 
script.src = url+'&callback=jsonpCallback'; 
document.body.appendChild(script); 

但繼續在控制檯收到消息

Resource interpreted as Script but transferred with MIME type text/html: 

我也嘗試以下,並得到相同的錯誤

$.ajax({ 
    type: 'GET', 
    url: url, 
    jsonpCallback: 'jsonCallback', 
    dataType: 'jsonp', 
    success: function(json) { 
     console.log(json); 
    }, 
    error: function(e) { 
     console.log(e.message); 
    } 
}); 

function jsonCallback(json) { 
    console.log(json); 
} 

我相信api響應,因爲我檢查netwo Chrome中的rk選項卡,並可以看到來自API的響應。你對我能做什麼有什麼建議嗎?或者我需要編寫一個服務器端API來ping TinySong api?

回答

2

試試就行了你的Ajax調用添加項

jsonp:true, 

之前或您的jsonpCallback 後也確保您的網址有「&回調= jsonpCallback」附加到它。

即時尋找在礦山,工程的一些舊代碼,而這些都是唯一的區別我看到

+1

所以你的建議有些工作,我可以看到,響應總是轉到錯誤回調。即使它在錯誤回調中,我現在正在研究如何提取我需要的數據。 – user1386101

+0

問題似乎是TinySong API不支持JSONP。它以text/html而不是javascript的形式發回數據。此外,它忽略回調參數,因此決不會在客戶端調用成功功能。 –