如何使用Bitly V4 API和jQuery缩短URL

时间:2019-05-03 11:22:01

标签: javascript jquery api

因此,我尝试使用新的V4 Bitly API缩短URL,但出现JSON错误。

我的代码:

$(function() {
    $(".createBitly").on("click", function(e) {

        e.preventDefault();

        var url = $(this).attr("href");
        var accessToken = "xxx";

        var params = {
            "long_url" : encodeURIComponent(url)            
        };

        $.ajax({
            url: "https://api-ssl.bitly.com/v4/bitlinks",
            cache: false,
            dataType: "json",
            method: "POST",
            contentType: "application/json",
            beforeSend: function (xhr) {
                xhr.setRequestHeader("Authorization", "Bearer " + accessToken);
            },
            data: params
        }).done(function(data) {
            console.log(data);
        }).fail(function(data) {
            console.error(data);
        });

    });
});

结果:422 http错误;

  "{"message":"UNPROCESSABLE_ENTITY","resource":"bitlinks","description":"The JSON value provided is invalid."}"

但是可以使用CURL运行它:How to shorten URL using PHP Bitly v4?

我在做什么错?仅使用jQuery不可能吗?

TIA。

1 个答案:

答案 0 :(得分:0)

我已经根据您上面的代码进行了此修改,并且效果很好。

1)JSON.stringify,然后发送请求(将请求转换为JSON格式)。

2)不需要encodeURIComponent()

$(function() {
  $(".createBitly").on("click", function(e) {

    e.preventDefault();

    var url = $(this).attr("href");
    var accessToken = "token";

    var params = {
        "long_url" : url           
    };

    $.ajax({
        url: "https://api-ssl.bitly.com/v4/shorten",
        cache: false,
        dataType: "json",
        method: "POST",
        contentType: "application/json",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", "Bearer " + accessToken);
        },
        data: JSON.stringify(params)
    }).done(function(data) {
        console.log(data);

    }).fail(function(data) {
        console.log(data);
    });
  });
});