从获取响应对象获取文本

时间:2017-01-30 22:22:24

标签: javascript ajax fetch

我使用fetch进行API调用,一切正常但在这个特定情况下,我遇到了一个问题,因为API只返回一个字符串 - 而不是一个对象。

通常,API返回一个对象,我可以解析JSON对象并得到我想要的东西,但在这种情况下,我无法找到我从响应对象中的API获取的文本

这里是响应对象的样子。 enter image description here

我以为我会在身体内找到文字,但我似乎无法找到它。我在哪里看?

3 个答案:

答案 0 :(得分:14)

使用fetch javascript API,您可以尝试:

{{1}}

还可以查看获取文档:here

答案 1 :(得分:1)

  

ES6语法:

     fetch("URL")
        .then(response => response.text())
        .then((response) => {
            console.log(response)
        })
        .catch(err => console.log(err))

答案 2 :(得分:0)

您可以通过两种不同的方式执行此操作:

  1. 第一种选择是使用response.text()方法,但是请注意,在2019年12月,its global usage is only 36.71%

    async function fetchTest() {
        let response = await fetch('https://httpbin.org/encoding/utf8');
        let responseText = await response.text();
    
        document.getElementById('result').innerHTML = responseText;
    }
    
    (async() => {
        await fetchTest();
    })();
    <div id="result"></div>

  2. 第二种方法是改为使用response.body属性,该属性需要做更多的工作,但具有73.94% of global usage

    async function fetchTest() {
        let response = await fetch('https://httpbin.org/encoding/utf8');
        let responseText = await getTextFromStream(response.body);
        
        document.getElementById('result').innerHTML = responseText;
    }
    
    async function getTextFromStream(readableStream) {
        let reader = readableStream.getReader();
        let utf8Decoder = new TextDecoder();
        let nextChunk;
        
        let resultStr = '';
        
        while (!(nextChunk = await reader.read()).done) {
            let partialData = nextChunk.value;
            resultStr += utf8Decoder.decode(partialData);
        }
        
        return resultStr;
    }
    
    (async() => {
        await fetchTest();
    })();
    <div id="result"></div>