2010-01-02 70 views
0

我試着打電話給使用這個jQuery腳本bit.ly API:

$.get('http://api.bit.ly/shorten?login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&version=2.0.1&longUrl=www.wordpress.com', function(data) { 
    alert(data); 
}); 

但螢火蟲說: 「405不允許的方法」。怎麼了?非常感謝。

回答

3

$.get不支持跨域GET。

您可以使用JSONP技術和$.getJSON

順便說一下,http://應該在bit.ly API調用的longUrl參數中。但這不是主要問題。

-1

他們可能期望POST請求而不是GET。

+0

事實上,GET是允許的。 – iamamac 2010-01-02 18:35:07

0

該URL無效。

您必須將http://放在longUrl參數的前面。

編輯

一些澄清:

此網址http://api.bit.ly/shorten?login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&version=2.0.1&longUrl=http://www.wordpress.com回報

{ "errorCode": 0, "errorMessage": "", "results": { "www.wordpress.com": { "errorCode": 1206, "errorMessage": "URL you tried to shorten was invalid.", "statusCode": "ERROR" } }, "statusCode": "OK" } 

這一個:http://api.bit.ly/shorten?login=bitlyapidemo&apiKey=R_0da49e0a9118ff35f52f629d2d71bf07&version=2.0.1&longUrl=http://www.wordpress.com回報

{ "errorCode": 0, "errorMessage": "", "results": { "http://www.wordpress.com": { "hash": "j1IP3", "shortKeywordUrl": "", "shortUrl": "http://bit.ly/6i1NkN", "userHash": "6i1NkN" } }, "statusCode": "OK" } 
+0

正確但不是主要問題。即使URL無效,也會有迴應。 – iamamac 2010-01-02 18:40:32

6

如前所述,標準AJAX調用不起作用跨域。只需使用JSONP和$ .getJSON()來代替。

下面是一個例子,如何獲得與Bitly API和jQuery縮短的URL:

function get_short_url(long_url, login, api_key, func) 
{ 
    $.getJSON(
     "http://api.bitly.com/v3/shorten?callback=?", 
     { 
      "format": "json", 
      "apiKey": api_key, 
      "login": login, 
      "longUrl": long_url 
     }, 
     function(response) 
     { 
      func(response.data.url); 
     } 
    ); 
} 

下面的代碼可以用來獲得短網址:

/* 
Sign up for Bitly account at 
https://bitly.com/a/sign_up 

and upon completion visit 
https://bitly.com/a/your_api_key/ 
to get "login" and "api_key" values 
*/ 
var login = "LOGIN_HERE"; 
var api_key = "API_KEY_HERE"; 
var long_url = "http://www.kozlenko.info"; 

get_short_url(long_url, login, api_key, function(short_url) { 
    console.log(short_url); 
}); 
1

原因你」重新看到405錯誤是因爲您違反了Same Origin Policy,這會阻止從其他域,子域或協議檢索數據。

相關問題