在 javascript 中加载 Image Ranomizer API 以在 HTML 上显示

Posted

技术标签:

【中文标题】在 javascript 中加载 Image Ranomizer API 以在 HTML 上显示【英文标题】:Loading in an Image Ranomizer API within javascript to display on an HTML 【发布时间】:2021-03-23 19:43:42 【问题描述】:

我对编程很陌生。

我正在做一个学校项目,我获得了一个 API,每次刷新网络浏览器时都会显示随机的狗。无论出于何种原因,我都会收到 404 错误,但我可以看到 url 在控制台中随着狗品种的变化而变化。在我的 html 页面上,我得到了假设要加载照片的损坏的图像图标。

这是我的代码:

let xhrdog = new XMLHttpRequest();   //first ajax request, dog photos from api
xhrdog.onreadystatechange = function() 

  if (xhrdog.readyState === 4) 
    if (xhrdog.status === 200) 
      let ajdog = JSON.parse(xhrdog.responseText); 
      let image = document.createElement('img')
      image.src = ajdog   //xhrdog.responseText;
      let dog = document.getElementById('dog')
      dog.appendChild(image);
    
  


xhrdog.open('GET', 'https://dog.ceo/api/breeds/image/random');
xhrdog.send();

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

你就快到了。只是,正如您在控制台中发现的那样,您从服务中获得的不仅仅是 img url。它正在发送一个字符串,您可以将其解析为 JSON,就像您正在做的那样。

当你解析它时,你实际上在 ajdog 中有一个对象,而不仅仅是一个字符串。其中一项是“消息”,其中包含狗图像的完整 URL。因此,请使用 ajdog.message 而不仅仅是 ajdog 来放入您的 img.src。

这是带有此更改的 sn-p:

let xhrdog = new XMLHttpRequest(); //first ajax request, dog photos from api

xhrdog.onreadystatechange = function () 

if (xhrdog.readyState === 4) 

if (xhrdog.status === 200) 

let ajdog = JSON.parse(xhrdog.responseText);
console.log(xhrdog.responseText);//LOOK IN THE CONSOLE TO SEE WHAT IS SENT
let image = document.createElement('img');

image.src = ajdog.message;   //xhrdog.responseText;

let dog = document.getElementById('dog');

dog.appendChild(image);






xhrdog.open('GET', 'https://dog.ceo/api/breeds/image/random');

xhrdog.send();
<div id="dog"></div>

【讨论】:

【参考方案2】:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <img src="" >
    <script>
        //https://dog.ceo/api/breeds/image/random
        async function randomDog()
            //store the promise with url
            const result = await fetch('https://dog.ceo/api/breeds/image/random').then((data)=>
                return data.json()
            )
            //return a object
           return result
        
        //instanstiate image 
        const img= document.querySelector('img')
        //this function is returning a promise 
        randomDog().then((data)=>
            //console.log(data)
            img.setAttribute('src',data.message)
        )
    </script>
</body>
</html>

【讨论】:

这是如何从 url 获取随机图片并将其添加到您的“img”标签的属性“src”中的示例。该函数将返回一个承诺,因此您需要使用 ( .then) 方法。希望你能理解。

以上是关于在 javascript 中加载 Image Ranomizer API 以在 HTML 上显示的主要内容,如果未能解决你的问题,请参考以下文章

在 React Native Image 组件中加载本地图像

在 Javascript 中加载 XML 数据时出错

UITableViewCell 如何知道从数组或字典中加载啥 JSON

QDeclarativeImageProvider 不在容器中加载图像

在 UIWebview 中加载 Javascript+Html 内容

在 django 中加载带有变量名的静态文件