2

URL にクエリ文字列を追加してエンコードし、Bitly API ( http://dev.bitly.com/api.html ) を使用して短縮しようとしています。

最初の 2 つの手順はうまく機能しており、API を使用して URL を Bitly に送信することはできましたが、短い URL を表示することはできません。私が見ているのは[object Object]

Bitly アカウントにログインすると、履歴にビットマークが表示されるため、API 呼び出しが成功したことはわかっています。問題はコードにあるに違いありません。単純なものであると確信していますが、残念ながら私には理解できません。

$('#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/

PS OAuth アクセス トークンは変数に格納されます$accessTokenが、明らかな理由で削除されます。

4

1 に答える 1

2

$.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);
    });
});

さらに、戻り値を正しく理解するために のドキュメントをよく見てください。/v3/shorten実際には JSON オブジェクトが返され、url値は短い URL であることに注意してください。format: 'txt'短い URL を (文字列形式で) 応答全体として指定して取得することもできます。

編集: API ドキュメントを誤解しました。応答オブジェクトには外側のレベル (HTTP 応答テキストとは異なる bit.ly ステータス テキストなど) のメタデータが含まれているように見えますが、内側のdataオブジェクトには実際のデータが含まれている必要があります。アクセストークンがなくて動かなかったのですが、上記を試してみてください。(更新された JSFiddle )

于 2013-06-10T16:44:01.930 に答える