我正在尝试使用http://goo.gl带有以下jQuery函数的API 来缩短URL
$.ajax({
url: 'https://www.googleapis.com/urlshortener/v1/url?key=MY_API_KEY',
crossDomain: true,
type: 'POST',
contentType: 'application/json',
data: '{longUrl:"'+encodeURI(url)+'"}',
dataType: 'jsonp',
success: function(e) {
alert(JSON.stringify(e));
}
});
Run Code Online (Sandbox Code Playgroud)
我在JSON中收到以下错误:
{"error":{"errors":[{"domain":"global","reason":"required","message":"Required parameter: shortUrl","locationType":"parameter","location":"shortUrl"}],"code":400,"message":"Required parameter: shortUrl"}}
Run Code Online (Sandbox Code Playgroud)
为什么要求短网址?我究竟做错了什么?
您无法在JavaScript中执行跨域POST.当你提到crossDomain为true而dataType为jsonp是jsonp请求时,jQuery实际上做了什么,这只是一个使用标记从另一个服务器获取数据的hack.你得到了这个错误,因为它就好像你刚刚在没有参数的API页面上完成了一个GET requets.另一台服务器需要知道这一点并需要支持它.
Goo.gl API页面根本没有提到jsonp,这让我相信它不支持它.你最好的选择是在PHP中编写代理来为你做requets并返回结果,然后对该PHP文件进行Ajax调用.
编辑:如果是Chrome扩展程序,您可以使用特殊的Chrome方法执行跨域Ajax调用,以获取传递给Ajax对象的URL.您还需要将远程URL添加到扩展清单文件,如此处所述.
| 归档时间: |
|
| 查看次数: |
5489 次 |
| 最近记录: |