如何将数据从Node.js传输到Angular 6?

3

我正在使用http.get从nodejs获取数据到angular中。我想在页面加载时加载一些内容。因此,我只是在初始化方法中调用它。

_initialize(): void {
this.http.get('http://127.0.0.1:3000/query/getId').subscribe(
  data => {
    console.log("success");
  },
  err => {
    console.log("Error occured."+JSON.stringify(err));
  }
);
}

在我的服务器js中,

app.get('/query/getId',function(req,res){
             console.log("hi there");

 })

我想传递数据,但目前控制台消息本身在节点中没有显示。而在浏览器中,我可以看到错误消息“message”:“解析URL时的HTTP失败”。有人能告诉我如何继续进行吗?


这是因为Angular期望从服务器获取JSON数据,但目前尚未得到。如果您修改服务器以返回一些基本的JSON数据(甚至只需一个空对象,例如res.send('{}')),那么该错误应该会消失。 - user184994
仍然收到相同的错误消息:“在URL解析期间发生Http失败” @user184994 - viki
如果您在浏览器的开发者工具(F12)中检查网络选项卡中的请求,您能看到返回的响应吗? - user184994
状态码为200,在响应选项卡中显示“您的浏览器不支持JavaScript” - viki
3个回答

0

添加节点功能:

res.json("hi there");

仍然出现相同的错误,如“message”:“在URL解析期间发生Http失败” - viki

0

您可以使用responseType指定返回的数据不是JSON格式。请参见请求非 JSON 数据

在您的示例中,您应该能够使用:

 this.http.post('http://127.0.0.1:3000/query/getId',{}, {responseType: 'text'})

我只想要JSON响应。但是即使在返回JSON数据后,我仍然遇到了相同的错误,如“message”:“解析URL期间的HTTP失败”。 - viki
在这种情况下,请将标题设置为应用程序JSON并检查您的网络选项卡,以查看正在发送和接收的内容。 - Sajeetharan
在网络选项卡中,我得到了状态码200。但是我仍然面临着相同的错误。 - viki
你正在使用带有HttpClient的Angular 6吗? - Sajeetharan

0

尝试使用JSON数据的以下方法:

app.get('/query/getId',function(req,res){
    res.setHeader('Content-Type', 'application/json');
    res.send(JSON.stringify({ a: 1 }));
 });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接