google url shortener api和jquery无法正常工作

时间:2011-01-14 03:51:01

标签: jquery ajax api

我似乎无法使用谷歌的新网址缩短器api来使用jquery的post方法:

  $(document).ready(function() {
   $.post("https://www.googleapis.com/urlshortener/v1/url", { longUrl: "http://www.google.com/"},
      function(data){
        console.log("data" + data);
      });
   $('body').ajaxError(function(e, xhr, settings, exception) {
       $(this).text('fail'+e);
   console.log(exception);
   });
  });

所有这些都给了我一个空(数据)响应和一个空(异常)响应。任何想法?

我也试过这个没有成功:

   $.ajax({
 type: 'POST',
 url: "https://www.googleapis.com/urlshortener/v1/url",
 data: { longUrl: "http://www.google.com/"},
 success: success,
 dataType: "jsonp"
   });

7 个答案:

答案 0 :(得分:2)

我遇到了无法在jQuery上使用Google Shortener API的同样问题,但经过一些研究后,我在JSON.stringify上找到了一个简单的data

我的最终代码如下:

    window.googleShAPI = 'YOUR_KEY';
    window.getShortURL = function(url,cb){
        $.ajax({
             url:'https://www.googleapis.com/urlshortener/v1/url?key='+window.googleShAPI,
             type:"POST",
             data:JSON.stringify({longUrl:url}),
             contentType:"application/json",
             dataType:"json",
             success: function(data){ cb(data.id); }
        });
    }

    // example of use:
    window.getShortURL('http://www.google.com/',function(u){console.log('ShortURL is:'+u);})

答案 1 :(得分:1)

您需要API密钥才能使用此API

  

此方法需要一个查询参数:   您的API密钥(使用密钥查询参数)。注意:您可以在进行有限数量的呼叫时省略查询参数,例如在测试阶段。

也是JSON的回复

$.post("https://www.googleapis.com/urlshortener/v1/url?key=enter-your-api-key", { longUrl: "http://www.google.com/"},
  function(data){
    console.log("data" + data);
  }, "json");

答案 2 :(得分:0)

我假设您已阅读Google URL Shortener API参考说明,但我在您的代码段中未看到API密钥:

POST https://www.googleapis.com/urlshortener/v1/url?key={key}

答案 3 :(得分:0)

尝试设置contentType,如下所示:

$.ajax({
 type: 'POST',
 contentType: "application/json"
 url: "https://www.googleapis.com/urlshortener/v1/url",
 data: { longUrl: "http://www.google.com/"},
 success: success,
 dataType: "jsonp"
   });

答案 4 :(得分:0)

尝试使用getJson方法:

url="https://www.googleapis.com/urlshortener/v1/url";
data = {
    key:"your-api-key",
    shortUrl:"http://www.google.com"
};
$.getJSON(url, data, function(data, textStatus){
    if(data.status=="OK"){
        alert(data.longUrl);
        }
    });

答案 5 :(得分:0)

由于跨域脚本访问限制,您无法使用这些答案中当前描述的任何方法访问Google的网址缩短API。请参阅此处的讨论以获取解决方案:Cross Domain Issue with implementing Google URL shortener API

感谢tawman的回答,但它隐藏在评论中,我一开始并没有看到它。

答案 6 :(得分:0)

最佳解决方案:

<html>
<head>
<title>URL Shortener using Google API. http://goo.gl </title>
<script src="https://apis.google.com/js/client.js" type="text/javascript"> </script>
</head>
<script type="text/javascript">
function load() {
    gapi.client.setApiKey('[GOOGLE API KEY]');
    gapi.client.load('urlshortener', 'v1', function() { 
        document.getElementById("result").innerHTML = "";

        var Url = "http://onlineinvite.in";
        var request = gapi.client.urlshortener.url.insert({
            'resource': {
            'longUrl': Url
            }
        });
        request.execute(function(response) {

            if (response.id != null) {
                str = "<b>Long URL:</b>" + Url + "<br>";
                str += "<b>Test Short URL:</b> <a href='" + response.id + "'>" + response.id + "</a><br>";
                document.getElementById("result").innerHTML = str;
            }
            else {
                alert("Error: creating short url \n" + response.error);
            }
        });
    });
}
window.onload = load;
</script>
<body>
<div id="result"></div>
</body>
</html>

请替换[GOOGLE API KEY]