我开始研究Fetch API,在我的沙盒中我可以从https://api.github.com/users/octocat/gists获取它以通过
返回JSON对象数组 headers: {
'Accept': 'text/xml'
}
如果我从返回XML的私有API中获取,我需要进行哪些更改?我添加了
<?xml version="1.0"?>
<psgxml>
<years>
<year>1974</year>
<year>1952</year>
<year>1928</year>
</years>
</psgxml>
但我继续获取状态代码0并且控制台打印数据未定义。这是因为fetch假定响应是JSON吗?
此外,在Chrome DevTools的网络标签中,我可以看到我期待的XML响应。
/(<br.*?>|[\w\.\,]+)/g
我想通过console.log打印此XML响应
谢谢!
答案 0 :(得分:1)
解决! :d
function getXML() {
fetch('https://privateapi.com/xml')
.then(response => response.text()) // the promise
.then(data => console.log('Data', data)) // data
.catch(error => console.log('Error', error))
}
1.设置我必须在服务器中启用一些设置,因为我收到了错误&#34; Fetch API无法加载No&#39; Access-Control-Allow-Origin&#39;标题&#34; ...
2.需要两个。然后第一个处理承诺,然后第二个可以用来将响应转换为文本。
答案 1 :(得分:0)
您正在调用response.json()
,它无法将XML解析为对象,将其更改为response.text()
function getGithubGists() {
fetch('https://privateapi.com/xml')
.then(function(response) {
response.text().then(function(data) {
console.log('data', data)
})
})
.catch(function(error) {
console.log('Error', error)
})
}