我已经设置并测试了一个全局函数,以确保它正常工作:
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 动态创建的链接会通过函数?
更新编辑:
好的,只需稍微重置一下。我认为问题在于shortcutUrl 函数或我如何将值传递给它。只是为了测试我这样做的功能:
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) 返回未定义。但是,如果我取消注释 console.log(shortUrl); 并注释掉 return shortUrl;在函数中,我得到了从 bit.ly 返回的正确缩短的 URL。
为什么我不能在 console.log(shorten) 中获得正确的缩短 url?传递的变量是否错误?