2010-08-24 60 views
0

我卡 - 它的東西,我覺得很沮喪打算是簡單:(jQuery的AJAX URL縮短JSON請求不工作

的Jquery:

$.ajax({ 
url: "http://ur.ly/new.json?href=http://www.yahoo.com"), 
type: "GET", 
dataType: "jsonp", 
success: function(data){ 
console.log(data); 
}}); 

我試着這樣做和FF給了我一個「無效的標籤」的錯誤,鉻給出了另一個。

當我使用「JSON」作爲數據類型,我得到一個返回null。

令人沮喪的事情是URL,當你在瀏覽器上試試,效果很好。返回數據的「jsonp」變量的錯誤顯示了我想要的數據,但錯誤阻止了我進入它。

我試着交換到XML或腳本,相應地更改API的要求,但沒有。我試過其他縮短網站,但同樣的事情不斷髮生。

也嘗試將查詢部分移植到數據:但它也沒有工作。

幫助! :(並感謝您的通過:)

回答

1

jsonp是正確的。

由於安全原因,任何其他類型都不起作用。


我想你的代碼從ur.ly結果是一個純粹的JSON字符串不是一個JSONP字符串:

{"code":"X5","href":"http://www.yahoo.com"} 

你可以寫一個小的服務器端腳本來讀取這些數據。

您的JavaScript可以使用json而不是jsonp

+0

..查詢字符串應該進入'data {}' – jAndy 2010-08-24 12:13:31

+0

對不起,我做了一個快速替換爲URL的例子。實際的代碼本身都有雙引號。 嘗試將查詢字符串放入數據中,但發生同樣的事情。 – Eugene 2010-08-24 12:16:42

+1

文檔中沒有jsonp接口:http://code.google.com/p/urly/wiki/APIDocumentation – jantimon 2010-08-24 12:22:32

0

這是因爲您試圖使用jQuery AJAX調用來創建JSONP請求,但是ur.ly API目前不支持JSONP。由於Javascript的same origin policy,使用普通的JSON調用到其他域將無法正常工作。

你或者可以創建作爲服務器端代理腳本一去之間,爲你的JavaScript和遠程服務器(如Ghommey上面說的),或者使用不同的URL縮短API是確實支持JSONP請求(例如bit.ly)。