首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery URL bit.ly缩写程序

jQuery URL bit.ly缩写程序
EN

Stack Overflow用户
提问于 2011-05-07 08:36:22
回答 3查看 2.4K关注 0票数 4

谁能帮我弄一下这个jQuery bit.ly网址缩写工具?

代码如下:

代码语言:javascript
复制
function shortenUrl(urlMatch)
{
    var urlMatch = urlMatch
    var username="myusername";
    var key = 'R_897b82b73568ea74fffbafa5a7b846d';
    $.ajax({
        url:"http://api.bit.ly/v3/shorten",
        data:{longUrl:urlMatch,apiKey:key,login:username},
        dataType:"jsonp",
        success:function(v)
        {
            var shortUrl=v.data.url;
            return shortUrl;
        }
    });
}

$('button').click(function(){
    var urlMatch = $(this).val();
    var newUrl = shortenUrl(urlMatch);
    $('#menu').html(newUrl);
});

每当我运行脚本时,它都会在控制台中返回以下代码:

代码语言:javascript
复制
jsonp1304728172115({ data : [ ] , "status_code" : 500, "status_txt": "missing_arg_uri"})
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-07 09:41:27

你有

data:{longUrl:urlMatch,apiKey:key,login:username},

如果jsonp类似于json,那么您的数据参数的格式不正确:

data:"{'longUrl':" + urlMatch + ",'apiKey':" + key + ",'login':" + username + "}",

上面的代码没有经过测试,但应该是相似的。

票数 2
EN

Stack Overflow用户

发布于 2011-05-07 08:40:06

这个:urlMatch = $(this).val();会把按钮文本放到urlMatch中,这是你想要的吗?

此外,回调上的return将不会到达该函数,因为ajax()是一个异步函数。要使其同步,请向ajax()参数添加async:false

而且return也不能很好地工作,因此必须将结果赋给全局变量。

但是最好的方法是用$('#menu').html(shortUrl);替换return shortUrl;,因为这就是您想要的结果。而且你不需要async:false,它会阻塞你的代码并暂时锁定浏览器。

如果所有操作都失败,请尝试在查询字符串本身上传递参数。您可能想要take a look at this

票数 1
EN

Stack Overflow用户

发布于 2013-09-05 13:03:01

"var urlMatch = urlMatch“后面缺少分号

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5918351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档