我怎样用HTML打印json?

xtfmy6hx  于 2022-12-20  发布在  其他
关注(0)|答案(2)|浏览(125)

我想从链接中打印出我的html数据,但它总是说“未定义”,我不知道,问题在哪里。有人能帮助吗?

let url = 'https://ac7minh6n7s3rw4qfchrofbwai0amiko.lambda-url.eu-north-1.on.aws/';

fetch(url)
.then(res => res.json())
.then(out => console.log('JSON: ', out))
.then(out => document.write('JSON string: ', JSON.stringify(out)))
.catch(err => { throw err })
von4xj4u

von4xj4u1#

传递给then回调函数的值是链中上一个链接的返回值。如果该值是一个承诺,则在调用then之前将其解析。

.then(out => console.log('JSON: ', out))

console.log的返回值为undefined,因此您将undefined传递给试图对该值执行document.write的函数。
你需要返回你想要处理的值:

.then(out => {
    console.log('JSON: ', out);
    return out;
})

然而因为你没有创建新的承诺,所以没有必要使用额外的then。你可以合并这两个:

.then(out => {
    console.log('JSON: ', out);
    document.write('JSON string: ', JSON.stringify(out);
    return out;
})
yeotifhr

yeotifhr2#

之所以是undefined,是因为console.log()的返回值是undefined,去掉它就可以引用out:

let url = 'https://ac7minh6n7s3rw4qfchrofbwai0amiko.lambda-url.eu-north-1.on.aws/';

fetch(url)
.then(res => res.json())
.then(out => document.write('JSON string: ', JSON.stringify(out)))
.catch(err => { throw err });

相关问题