2012-11-20 31 views
4

我想從一個網站(特別是Yummly)獲取一些API數據,它看起來像當我嘗試執行JSONP請求時收到JSON數據。這會導致「Uncaught SyntaxError:UnexpectedToken:」。如果jQuery認爲它收到JSONP請求,我該如何解釋JSON?

它試圖做到這一點的代碼是:

var keywords = $('#input-text').val(); 
var url = "http://www.yummly.com/api/recipesq="+keywords+"&_app_id=<snipped-app-id>&_app_key=<snipped-api-key>&"; 
$.ajax({                    
     type: 'GET', 
     url: url, 
     dataType: 'jsonp', 
     //dataType: 'jsonp json' 
     success: function() { console.log('Success!'); }, 
     error: function(data, data2) { console.log(data); }, 
     //jsonp: false, 
     //jsonpCallback: 'recipeGet'           
    }); 
}); 

我試圖通過重載數據類型來轉換成JSON從JSONP,但是這並沒有導致任何不同的結果比上面。我也嘗試改變回調函數,但是當我收到語法錯誤時,它不會去函數。當我不使用JSONP並且只使用JSON時,我收到一個「XMLHttpRequest無法加載Origin,Access-Control-Allow-Origin不允許使用Origin。」。

任何幫助將不勝感激,我一直在努力與此相當。

+3

您的gettng數據服務是否明確支持'JSONP'?如果他們不這樣做,那麼你不能使用'JSONP'。如果他們也不支持'CORS'頭部,那麼你就不能通過其他域上的AJAX使用這個數據源。答案是什麼樣的? –

+0

JSON.parse(data) –

+0

@RPM無法幫助,因爲原始響應文本在JSONP請求中不可用。 – Pointy

回答

9

我是負責Yummly API的開發人員之一。

Yummly API支持JSONP(documentation解釋如何),但您的請求有幾個問題。

  1. 的API網址應該是

    HTTP://api.yummly.com/v1/api/recipes(http後面刪除空格)

  2. 應該有一個 '?'之間/食譜和q(q是一個參數,/ v1/api /食譜是路徑)

  3. 然後,您可以像往常一樣傳遞一個回調參數與JSONP調用($ .ajax與dataType:'JSONP'喜歡你正在使用上面應該工作)

最後,你的app_key是祕密的。請不要在Stack Overflow等公共站點上發佈它。我撤銷了它,請去https://developer.yummly.com生成一個新的。

+2

非常感謝您的回覆!對於API密鑰的抱歉,我急於嘗試解決這個問題,我不認爲我應該把它解決掉。看來我的問題是附加'api'。後綴到網址。感謝你的幫助! – RKuncewicz

+2

註冊用於回答關於他正在處理的API的問題。頂級布洛克! – Bankzilla

相關問題