Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示Bitly API调用中的短URL?_Javascript_Jquery_Json_Api - Fatal编程技术网

Javascript 如何显示Bitly API调用中的短URL?

Javascript 如何显示Bitly API调用中的短URL?,javascript,jquery,json,api,Javascript,Jquery,Json,Api,我正在尝试向URL添加查询字符串,对其进行编码,然后使用Bitly API缩短它() 前两个步骤工作得很好,我已经设法使用API将URL发送到Bitly,但无法显示短URL;我看到的只是[object object] 我知道API调用是成功的,因为当我登录到我的Bitly帐户时,我可以在我的历史记录中看到bitmark,所以问题一定出在我的代码上,我确信这很简单,但遗憾的是我无法理解 $('#shorten').click(function () { $encodedTracke

我正在尝试向URL添加查询字符串,对其进行编码,然后使用Bitly API缩短它(

前两个步骤工作得很好,我已经设法使用API将URL发送到Bitly,但无法显示短URL;我看到的只是
[object object]

我知道API调用是成功的,因为当我登录到我的Bitly帐户时,我可以在我的历史记录中看到bitmark,所以问题一定出在我的代码上,我确信这很简单,但遗憾的是我无法理解

$('#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);
    });
我已经将完整的代码放到了JSFIDLE:


p.S.OAuth访问令牌存储在变量
$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);
    });
});
此外,您还需要仔细查看以正确理解返回值。请注意,它实际上返回一个JSON对象,
url
值是短url。您还可以指定
格式:“txt”
并获取短URL(字符串形式)作为整个响应


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

谢谢你,我知道这会很明显,因为这是我第一次尝试异步。它似乎正在工作,但我不能显示短url-我得到'未定义'。我可以使用status_txt显示状态。有什么想法吗?更新的fiddle:看起来我误解了API文档中的响应对象。我将进行编辑。短url仍处于“未定义”状态。奇怪的是,status_txt显示的是“success”而不是“OK”,这正是我希望从API文档中看到的?我已经使用txt格式安装并运行了它,但是如果有任何关于JSON格式工作的建议,我将不胜感激。对不起。。。我只是在阅读API文档的过程中跌跌撞撞地读了一遍,没有实际使用API的经验。当我开始回答这个问题时,我的主要目标是处理异步问题,而它正是从那里发展起来的。很抱歉如果我有机会玩一玩,以后再弄明白,我会再次编辑我的答案。不过,很高兴你现在能工作!