bit.ly から短縮 URL を返そうとする基本的な関数があります。私のユーザー名と api_key は、この投稿のために削除されたばかりですが、テストされており、正しい応答を得ています。また、確認したところ、正しいデータを含む JSON 応答を取得しています。
私が抱えている問題は、この関数をサイトのさまざまな場所で呼び出して、ツイートの一部に含まれるリンクを短縮できるようにしたいということです。つまり、何かがツイートされ、ページの URL を動的に呼び出す必要があることを明確に知っているため、時間内に呼び出すことができる関数を作成するというアイデアでした。
URL が関数に渡されると、戻り値として undefined が取得されます。ここで機能:
var UrltoShorten = 'http://google.com',
bitly = shortenUrl(UrltoShorten);
function shortenUrl(longUrl) {
var username = 'removed',
key = 'removed';
$.ajax({
url: 'http://api.bit.ly/v3/shorten',
data: {
longUrl: longUrl,
apiKey: key,
login: username
},
dataType: 'jsonp',
success: function (v) {
var shortUrl = v.data.url;
return shortUrl;
//console.log(shortUrl); // Will return shorten Url
}
});
}
console.log(bitly); // Returns undefined
私たちのテストでは、success 関数内の値を console.logging すると、毎回短縮 URL が返されることがわかりました。shortUrl 関数の外で値を Console.logging すると、毎回 undefined が返されます。
関数の外で正しい値を取得できない理由はありますか?