javascript - 如何显示 Bitly API 调用的短 URL?

标签 javascript jquery json api

我正在尝试将查询字符串添加到 URL,对其进行编码,然后使用 Bitly API ( http://dev.bitly.com/api.html ) 缩短它。

前两个步骤运行良好,我已成功使用 API 将 URL 发送到 Bitly,但无法显示短 URL;我所看到的只是 [object Object]

我知道 API 调用已经成功,因为当我登录到我的 Bitly 帐户时,我可以在我的历史记录中看到该位标记,因此问题一定出在我的代码上,我确信这很简单,但遗憾的是它超出了我的能力范围。

$('#shorten').click(function () {
        $encodedTrackedURL = encodeURIComponent($trackedURL);
        $bitly = $.getJSON('https://api-ssl.bitly.com/v3/shorten?access_token=' + $accessToken + '&longUrl=' + $encodedTrackedURL + '&format=json');
        $('#displayURL').text($bitly);
    });

我已将完整代码放在 jsfiddle 上: http://jsfiddle.net/gstubbenhagen/EnNq3/15/

附注OAuth 访问 token 存储在变量 $accessToken 中,但由于显而易见的原因被删除。

最佳答案

问题是您没有正确使用 $.getJSON 。由于这是异步调用,因此字符串不会同步存储在变量中。相反,您需要在回调函数中完成后续工作。

$('#shorten').click(function () {
    $encodedTrackedURL = encodeURIComponent($trackedURL);
    var params = {
        access_token: $accessToken,
        longUrl: $encodedTrackedURL,
        format: 'json'
    };

    $.getJSON('https://api-ssl.bitly.com/v3/shorten', params, function (response, status_txt) {
        $('#displayURL').text(status_txt + ' ' + response.data.url);
    });
});

此外,您还需要仔细查看 documentation for /v3/shorten正确理解返回值。请注意,它实际上返回一个 JSON 对象,其中 url 值是短 URL。您还可以指定 format: 'txt' 并获取短 URL(字符串形式)作为整个响应。

编辑:我误解了 API 文档。看起来响应对象包含外部级别的元数据(例如 bit.ly 状态文本,与 HTTP 响应文本不同),然后内部 data 对象应该包含真实数据。由于缺少访问 token ,我无法让它工作,但请继续尝试上述操作。 (Updated JSFiddle)

关于javascript - 如何显示 Bitly API 调用的短 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17028085/

相关文章:

jquery - 中心网格元素

java - 如何发送带有 json 正文和 url 参数的 http 帖子?

javascript - 将点表示法转换为 JSON

javascript - 如何在 fullpage.js 幻灯片上居中 div?

javascript - 在 JavaScript 中寻找具有特定深度的元素

javascript - jQuery Slider(div 粘在一边)

javascript - spring-mvc中将json解析为具有其他对象属性的java对象

javascript - 在 Chrome 中检测 java 版本

javascript - "Uncaught TypeError: Cannot use ' 在 ' operator "使用值 $(this)

javascript - 如何制作链接方法但同时返回超过 3 个值