【问题标题】:Why can't I call bit.ly API from JavaScript using jQuery's $.get function?为什么我不能使用 jQuery 的 $.get 函数从 JavaScript 调用 bit.ly API?
【发布时间】:2010-01-02 18:13:10
【问题描述】:

我尝试使用这个 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 方法不允许”。怎么了?非常感谢。

【问题讨论】:

    标签: javascript jquery api bit.ly


    【解决方案1】:

    如前所述,标准 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);
    });
    

    【讨论】:

      【解决方案2】:

      $.get不支持跨域GET。

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

      顺便说一句,http:// 应该在 bit.ly API 调用的 longUrl 参数中。但这不是主要问题。

      【讨论】:

        【解决方案3】:

        您看到 405 错误的原因是您违反了 Same Origin Policy,这会阻止从不同的域、子域或协议检索数据。

        【讨论】:

          【解决方案4】:

          网址无效。

          您必须将 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" }
          

          【讨论】:

          • 正确但不是主要问题。即使 URL 无效也会有响应。
          【解决方案5】:

          他们可能期望一个 POST 请求而不是一个 GET。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-12-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多