【问题标题】:How do I display the short URL from a Bitly API call?如何显示来自 Bitly API 调用的短 URL?
【发布时间】:2013-06-10 15:59:55
【问题描述】:

我正在尝试向 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 访问令牌存储在变量 $accessToken 中,但出于显而易见的原因被删除。

【问题讨论】:

    标签: javascript jquery json api


    【解决方案1】:

    问题是您没有正确使用$.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 对象应该包含真实数据。由于缺少访问令牌,我无法让它工作,但请继续尝试上述方法。 (Updated JSFiddle)

    【讨论】:

    • 谢谢你,我知道这会很明显,因为这是我第一次尝试异步。它现在似乎正在工作,但我无法显示短网址 - 我得到“未定义”。但是,我可以使用 status_txt 显示状态。有任何想法吗?更新小提琴:jsfiddle.net/gstubbenhagen/EnNq3/16
    • 看起来我误解了 API 文档中的响应对象。我会编辑。
    • 短网址仍然是“未定义”。奇怪的是 status_txt 显示的是“成功”而不是“确定”,这是我期望从 API 文档中看到的......?
    • 我已经使用 txt 格式启动并运行了它,但任何有关使 JSON 格式工作的指针将不胜感激。
    • 对不起...我只是通过阅读 API 文档而磕磕绊绊,没有实际使用 API 的经验。当我开始回答时,我的主要目标是处理异步问题,它只是从那里开始发展起来的。对不起!如果我有机会玩玩并在以后解决这个问题,我会再次编辑我的答案。不过,很高兴您现在可以使用它!
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    相关资源
    最近更新 更多