Giphy 上传适用于 .ajax 但不能获取

Posted

技术标签:

【中文标题】Giphy 上传适用于 .ajax 但不能获取【英文标题】:Giphy uplaod works with .ajax but not fetch 【发布时间】:2021-11-03 02:40:15 【问题描述】:

我正在尝试将 gif 上传到 Giphy。它使用 jQuery/.ajax 工作,但我无法让它与 fetch 一起工作。

这里是 .ajax 版本:

$.ajax(
    type: "POST",
    url: "http://upload.giphy.com/v1/gifs",
    data: 
      api_key: "E0sxxxxxxxxxxxxxxxxxxxxxxxxxx",
      source_image_url: "https://urlto/snoopy.gif",
      tags: "cute dog",
    ,
    success: function (data) 
      console.log(data);
    ,
    error: function (data) 
      alert("fail");
    ,
  );

and here is the fetch version which returns a 401 error:

 fetch("https://upload.giphy.com/v1/gifs", 
    method: "POST",

    body: 
      api_key: "E0sxxxxxxxxxxxxxxxxxxxxxxxxxx",
      source_image_url: "https://urlto/snoopy.gif",
      tags: "cute dog",
    ,

  ).then((response) => 
    console.log("status:");
    console.log(response);
  );

我没有受过 fetch 方面的培训,所以对我做错的事情有任何帮助都会很棒。

【问题讨论】:

【参考方案1】:

您不能像在 $.ajax 中那样将普通对象作为请求主体传递来获取。使用 URLSearchParams 对象

 fetch("https://upload.giphy.com/v1/gifs", 
    method: "POST",
    body: new URLSearchParams(
      api_key: "E0sxxxxxxxxxxxxxxxxxxxxxxxxxx",
      source_image_url: "https://urlto/snoopy.gif",
      tags: "cute dog"
    )    
  ).then((response) => 
    console.log("status:");
    console.log(response);
  );

【讨论】:

以上是关于Giphy 上传适用于 .ajax 但不能获取的主要内容,如果未能解决你的问题,请参考以下文章

Ajax 仅适用于第一次从 php 中的 while 循环中获取数据

谷歌云获取存储桶 - 适用于 cli 但不适用于 python

angularJS ajax 调用失败 403 但 jQuery ajax 调用适用于跨站点 templateUrl 加载。 [复制]

获取请求适用于邮递员,但适用于浏览器

无法使用 discord.js 获取带有 giphy 的 gif,制作机器人

我正在使用 Giphy API,我想知道如何自动获取 GIF 的图像 URL,而不是手动获取