【问题标题】:AJAX post request using qwest.js to goo.gl url shortener api使用 qwest.js 到 goo.gl url 缩短器 api 的 AJAX 发布请求
【发布时间】:2015-03-20 17:46:53
【问题描述】:

我正在尝试使用 goo.gl URL Shortener API 一个开源库 (qwest.js) 来缩短 URL。虽然我已经使用 jquery 成功实现了它,但是它给了我错误“这个 API 不支持解析表单编码的输入”。使用 qwest 完成后。

我的 jquery 代码:

var longURL = "http://www.google.com/";
 $.ajax({
        url: 'https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyANFw1rVq_vnIzT4vVOwIw3fF1qHXV7Mjw',
        type: 'POST',
        contentType: 'application/json; charset=utf-8', 
        data: '{ longUrl:"'+ longURL+'"}',         
        success: function(response) {
          console.log(response)
        }
 })
.done(function(res) {
    console.log("success"); 
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});

以及带有 qwest.js 的非工作代码

var longURL = "http://www.google.com/"    
qwest.post('https://www.googleapis.com/urlshortener/v1/url?key=479dfb502221d2b4c4a0433c600e16ba5dc0df4e&',
    {longUrl: longURL}, 
    {responseType:'application/json; charset=utf-8'})
                    .then(function(response) {
                        // Make some useful actions
                    })
                    .catch(function(e, url) {
                        // Process the error
                    });

强烈推荐任何帮助。

【问题讨论】:

    标签: javascript jquery ajax google-url-shortener


    【解决方案1】:

    这里是 qwest 的作者 ;)

    如文档中所述:the default Content-Type header is application/x-www-form-urlencoded for post and xhr2 data types, with a POST request

    但 Google Shortener 服务不接受它。我假设它需要一个 JSON 输入类型。然后你应该将qwest的dataType选项设置为json。此外,您的 responseType 选项无效并且不遵循文档。通常,如果 Google 使用有效的 Content-Type 标头回复请求,则不必设置它。这是很好的代码:

    qwest.post('https://www.googleapis.com/urlshortener/v1/url?key=479dfb502221d2b4c4a0433c600e16ba5dc0df4e&', {longUrl: longURL}, {dataType:'json'})

    如果 Google 未发送可识别的Content-Type,只需将responseType 选项也设置为json

    【讨论】:

    • 您好!感谢{ dataType:'json'} 。有效。我还注意到我也使用了错误的密钥(不同的东西)好插件
    • 谢谢!很高兴您解决了问题
    • 我们可以像使用 ajax 一样使用 qwest 进行同步调用吗?
    • 是的,我们可以通过将async 选项设置为false
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多