当前位置: 首页 > 知识库问答 >
问题:

尝试使用fetch访问响应数据

景令秋
2023-03-14

我正在尝试一些简单的方法,使用FetchAPI从应用程序前端发出请求,如下所示

let request = new Request('http://localhost:3000/add', {
    headers: new Headers({
        'Content-Type': 'text/json' 
    }),
    method: 'GET'
});

fetch(request).then((response) => {
    console.log(response);
});

我在服务器上像这样处理这个请求,

app.get('/add', (req, res) => {
    const data = {
        "number1": "2", 
        "number2": "4"
    };
    res.send(data);
});

但是,当我尝试访问前端console.log(响应)上的数据时,会得到以下对象

Response {type: "basic", url: "http://localhost:3000/add", redirected: false, status: 200, ok: true…}
body:(...)
bodyUsed:false
headers:Headers
ok:true
redirected:false
status:200
statusText:"OK"
type:"basic"
url:"http://localhost:3000/add"
__proto__:Response

响应主体为空。我想那就是数据显示的地方?如何有效地从服务器传递数据?

共有2个答案

鲁钱明
2023-03-14

也可以像这样一分为二

async fetchData() {
        let config = {
          headers: {
            'Accept': 'application/json'  //or text/json
          }
        }
        fetch(http://localhost:3000/add`, config)
          .then(res => {
            return res.json();
          }).then(this.setResults);

          //setResults
          setResults(results) {
          this.details = results;

          //or: let details = results

          console.log(details)  (or: this.details)
堵睿范
2023-03-14

好的,这在我的前端有效

fetch(request).then((response) => {
    console.log(response);
    response.json().then((data) => {
        console.log(data);
    });
});

关键部分是promise链的解决。

这里有一个类似的问题,JavaScript获取API—为什么不响应。json()返回promise对象(而不是json)?

 类似资料:
  • 问题内容: 我正在尝试使用访存api来带回一些数据,但是一旦检索到它就无法将其映射到控制台。 我得到的错误是 response.map不是函数 所以我试图解析响应(即var data = JSON.parse),该响应不起作用,并显示错误 有趣的是,当对XMLHttp请求执行相同操作时,需要解析它,因此我也想知道为什么这两种检索数据方法之间的区别。 如果有人能指出正确的方向,我将不胜感激。 问题答

  • 问题内容: 我正在尝试使用Instagram API,并在do- while循环中发出AJAX请求,直到next_url为空。我想要这段代码要做的就是通过发出连续的请求来获取所有关注者,直到完成为止。该代码有什么问题? 当我删除do- while循环时,它不会给我一个错误,但是一旦我在循环中使用AJAX请求,它就永远不会停止。显然,字符串没有更改为新获取的字符串-为什么?怎么了? 在逻辑失败后,我

  • 我正在使用Redux工具包的反应,但我正在unbale访问响应头

  • 问题内容: 我正在使用一些客户端JavaScript代码通过HTTP GET从Web服务器提取大量JSON数据。数据量可能很大,例如50 MB。这是在LAN上,因此这不是什么大问题,但仍然需要十秒钟左右。 为了使我的界面更具响应性,我想分块处理响应,并在UI可用时立即在UI中显示数据(例如,每MB或每秒)。浏览器兼容性不是问题。只要它可以在最新的Chrome和Firefox上运行,就可以了。但是,

  • 我正在尝试访问为执行验证而编写的HttpServerResponse主体。但是,<代码>ctx。回答endHandler(e-

  • 问题内容: 我遇到了一个例外,但找不到原因。 我得到的例外是: :尝试访问方法; 从B类 该方法是公开的。 我正在使用Tomcat 5.5.12和JAVA 1.6 问题答案: 几乎可以肯定,您在运行时使用的类版本与您期望的版本不同。特别是,运行时类将不同于您针对其进行编译的类(否则将导致编译时错误)-该方法曾经存在private吗?您的系统上任何地方都有类/ jar的旧版本吗? 作为状态的java