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

如何将值从节点返回到原点(angular2请求)

宰父阳焱
2023-03-14

我在nodejs实例中有代码,它接收post请求(成功),并且还显示通过json发送的参数(我需要在服务器端使用body-parser)。一旦收到post请求,我立即执行return“testing”;以检查值是否成功返回。但是,我的angular2回调(如图所示)不会激发或显示任何日志。知道为什么吗?

  var to_send = JSON.stringify({"test": argument});

  var headers = new Headers();
    headers.append('Content-Type', 'application/json');

   this.http
    .post('http://localhost:8080/', 
      to_send, {
        headers: headers
      })
    .map((res) => res.json() )
    .subscribe(
      (response) => { console.log("Success Response" + response)},
      (error) => { console.log("Error happened" + error)},
      () => { this.parseResponse(res); }
    );

函数parseResponse只是console.logs(“返回的东西”);

下面是我的代码现在的情况,仍然失败(没有触发parseResponse内部的日志):

var to_send = JSON.stringify({"test": argument});

  var headers = new Headers();
    headers.append('Content-Type', 'application/json');

  this.http
    .post('http://localhost:8080/', 
      to_send, {
        headers: headers
      })
    .map((res) => res.json() )
    .subscribe(
      (response) => { console.log("Success Response",response)},
      (error) => { console.log("Error happened",error)},
      () => { this.parseResponse(res); }
    );

在我的服务器中,我将返回以下内容:

var to_return = {};

to_return["message"] = "success";

return to_return;

然而,它根本不起作用。知道为什么吗?parseresponse是一个简单的日志“收到的反馈”。。。

共有3个答案

季骏祥
2023-03-14

我怀疑你的服务器代码。您是否验证了服务器是否真的发送了任何响应。而且它真的到达了你的客户端?

return to_return;

您还没有确切地提到您的服务器代码正在运行的位置。这个文档清楚地说明了核心HTTP模块已经创建的响应对象,并且它总是将它与请求对象一起传递。所以理想情况下,您只需使用响应对象。并像send一样调用它的API。

但您根本没有显示任何使用response对象的代码。

焦苏燕
2023-03-14

尝试以下操作,self.parseresponse(res);:

...
 let self = this;
 this.http
    .post('http://localhost:8080/', 
      to_send, {
        headers: headers
      })
    .map((res) => res.json() )
    .subscribe(
      (response) => { console.log("Success Response",response)},
      (error) => { console.log("Error happened",error)},
      () => { self.parseResponse(res); }
    );
吴同
2023-03-14

你知道吗

this.http...
  .map((res) => res.json() )

通过此操作,您可以将响应转换为JSON,因为它不是JSON,所以它将失败。您可以使用text()方法来获取字符串:

.map((res) => res.text())

也可以从后端返回一个对象:

return {result: "testing"}

和读取subscribe内的字段result

更新:

您可以在map方法中输出res,查看它真正包含的内容:

.map((res) => {
  console.log(res);
  return res.json();
})

还有一件事:调用this.parseresponse(res)res在此作用域中不存在。它将是parseresponse内部的undefined

 类似资料:
  • 问题内容: 我有一个函数,用关键字声明一个变量。然后,它将启动AJAX请求以设置变量的值,然后从函数中返回此变量。 但是,我的实现失败了,我也不知道为什么。 这是代码的简化版本; 问题答案: AJAX请求是异步的。您的sendRuest函数正在执行,正在发出AJAX请求,但它是异步发生的;因此,sendRuest的其余部分在AJAX请求(和onreadystatechange处理程序)执行之前就已

  • 我想在Android Studio中获取isSeen节点的值。M6F2mJjQ8uGPXAynZzV是消息的id,并将消息更改为消息。我想在适配器类中获得这个值。

  • 问题内容: 我正在一个项目中,用户对我们的代客服务的请求在另一端代客接受请求。 我正在使用Firebase作为后端,并应要求将客户uid保存在“ request”子项上。 当代客接受请求时,客户uid应从“请求”节点移至“进行中”节点。 我怎样才能做到这一点? 问题答案: 我建议使用这个: 这来自以下来源:https : //gist.github.com/katowulf/6099042。我在J

  • 当检查链表中的中间节点时,我对同时循环条件在链表中的工作方式感到困惑 这是正确的代码我有找到中间节点的链表 如果我将while循环更改为 或 我收到一个错误,上面写着 我只是想知道为什么拥有第二个代码和second.next代码很重要

  • 我有NGINX作为反向代理运行,它将所有超文本传输协议和https流量转发到我的node.js应用程序,该应用程序监听localhost: port 然而,我的问题是节点。js应用程序将所有传入请求视为来自::ffff:127.0。0.1 如何更改NGINX配置,使真正的IP能够通过并转发到节点。js应用程序? 编辑:快车。js/node。js应用程序处理请求。ip和应用程序。启用(“信任代理”)

  • 这里是初学者。因此,对于我的类我在CSS中将顺序设置为-1,使其成为顶部的div。它正确地删除了类,但我假设前一个active的顺序仍然是-1 基本上我有:div1 div2 div3 div4 div5,如果用户点击其中一个,结果应该是div4 div1 div2 div3 div5 再次单击应该得到div2 div1 div3 div4 div5,但我得到的是div4 div2 div1 di

  • 所以我想在10x10坐标系中转换不同支点之间的三个点 想象我想要什么: 这是我的第一个坐标系 翻译成: 现在,这些点必须保持在不同系统之间的同一点上,因此只有这些点的坐标应该更改。首先,我想我应该把之前的原点添加到转换后的坐标中,这对A和B是有效的,但C是不同的,也许我使用了一个错误的公式或其他东西 请你帮帮我

  • 我在循环中的节点JS中发送这样的GET请求 由于响应是异步的,是否可以在响应中获取原始请求URL? 谢谢!