Fetch API返回状态码0,需要XML响应

时间:2016-07-29 23:09:59

标签: javascript json xml fetch-api

我开始研究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响应

谢谢!

2 个答案:

答案 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)
   })
}