2016-08-10 98 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也許你得到的錯誤是在你的代碼中的其他地方? –