2016-08-10 58 views
3

node.js服务器给出“这是一个字符串”。 (writeHeader,write(string),end)。

执行$ http请求时,我看到node.js服务器正在响应并发回信息。

在角我执行以下请求:

angular.module('phoneList'). 
    component('phoneList', { 
    templateUrl: 'phone-list/phone-list.template.html', 
    controller: function PhoneListController($http) { 
    var self = this; 
    $http.get('http://127.0.0.1:8081/echo').then(function(response) { 
     self.data = response.data; 
    }, function(err) { 
     self.error = err; 
     self.status = response.status; 
     self.statusText = response.statusText; 
    }); 
} 
}); 

响应

{ “数据”:NULL, “状态”: - 1, “配置”:{ “方法” :“GET”,“transformRequest”:[null],“transformResponse”:[null],“url”:“http://127.0.0.1:8081/echo”,“headers”:{“Accept”:“application/json, text/plain,/“}},”statusText“:”“}

我试着只从node.js或HTML文本发送JSON。没有不同。

+5

'“状态”:-1'通常意味着你的后端不可用。可能是一个CORS'allow-origin'问题。控制台中有任何错误? – dex

回答

5

非常感谢,@Sebastian圣塞巴德@Dex指导我的解决方案。我只是想在我的计算机上运行一个简单的Node.js服务器,将消息提供给我的(简单)Angular脚本。

是的,这是一个跨域问题。 @TonyTakeshi给了这个问题很好的解决方案。你可以在Node.js的服务器上的文件通过解决这个问题:

app.all('*', function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type'); 
    next(); 
}); 

重的东西一个简单的测试配置;-)

3

请查阅official Angular docs for $http。它声明以下内容:

此外,小于-1的状态码被标准化为零。 -1通常意味着请求被中止,例如使用config.timeout。

所以我想这是你的后端问题。也许看看开发者控制台来检查请求是否到达你的服务器。

+0

你能提供一个plunkr/jsbin什么的?你的sie(nu.nl)是否接受“application/json”?如果没有,$ http不能给你任何东西。 –

+0

我试过了:$ http.get('http://validate.jsontest.com/?json= {“key”:“value”}',{timeout:10000})。then(function(response){ – tjm1706

+0

Works对我来说:http://jsbin.com/zaqaveh/edit?js,console也许你得到的错误是在你的代码中的其他地方? –