私はそれが機能していることを確認するために設定してテストしたグローバル関数を持っています:
function shortenUrl(url) {
...
}
次に、次のような別の関数の変数でその関数を呼び出そうとしています:
var pageLink = $(location).attr('href'),
shortLink = shortenUrl(pageLink);
したがって、これを実行しようとすると、未定義のエラーが発生します。ただし、pageLink 変数を、jQuery でページの URL を見つけることから、"http://example.com" のようなハードコードされたものに変更し、グローバル関数の値を console.log に変更すると、短縮リンクが返されます。
次のようにリターンコールをコメントアウトしています:
//return shortUrl;
console.log(shortUrl);
これにより、コンソールに正しい値が表示されます。しかし、それがまだ未定義として表示されるため、shortLink 変数に返されません。ここで簡単なものが欠けていますか?値が shortLink 変数に返されないのはなぜですか? jQuery で動的に作成されたリンクが関数を通過するのはなぜですか?
更新編集:
これを少しだけリセットします。問題は shortUrl 関数内、またはそれに値を渡す方法にあると思います。機能をテストするために、私はこれを行いました:
function shortenUrl(url) {
var url = url,
username = 'username',
key = 'api key';
$.ajax({
url: 'http://api.bit.ly/v3/shorten',
data: {
longUrl: url,
apiKey: key,
login: username
},
dataType: 'jsonp',
success: function (v) {
var shortUrl = v.data.url;
return shortUrl;
//console.log(shortUrl);
}
});
}
var shorten = shortenUrl('http://google.com');
console.log(shorten);
Console.log(shorten) は undefined を返します。ただし、console.log(shortUrl); のコメントを外すと、return shortUrl; をコメントアウトします。関数内で、bit.ly から正しく短縮された URL が返されます。
console.log(shorten) で正しい短縮 URL が返されないのはなぜですか? 変数が間違って渡されていませんか?