2017-09-14 71 views
1

我正在使用快速Web框架並嘗試從angularjs發出$ http請求。我將數據傳遞給客戶端請求,但服務器因未知原因未收到請求。請幫忙。node.js express未收到請求

server.js

var express = require('express'); 
var app = express(); 
var http = require('http'); 
var server = http.createServer(app); 
var io = require('socket.io')(server); 

var path = require('path'); 
var fs = require('fs'); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.post('/readTfile',function (req,res) { 
    console.log('i received a request'); 
    console.log(req.body); 
}); 

server.listen(3000); 

和角度HTML

<html> 
    <head> 
     <title>File tream 2</title> 
     <script type="text/javascript" src="javascripts/angular.js"></script>     
    </head> 

    <body> 
     <h2>File tream 2 AngularJS</h2> 
     <div ng-app = "mainApp">    
      <div id="readfile" ng-controller = "Ctrl1">     
       <div>{{myfiledata}}</div> </br></br> 
      </div> 
     </div>  
    </body> 
<script> 
var mainApp = angular.module("mainApp",[]) 

mainApp.controller('Ctrl1', function ($scope, $http) { 
     var filename = 'D:\\myapp\\public\\test.txt';  
     var obj = {"filename" : filename}; 
     $scope.myfiledata = 'result'; 
     $http({ 
       url: '/readTfile', 
       method: "POST", 
       data: JSON.stringify(obj), 
       //timeout: canceller.promise, 
       headers: {'Content-Type': 'application/json','charset' : 'utf-8'} 
       }).success(function(result) { 
       console.log(result); 
       $scope.myfiledata = 'result';      
       }).error(function(data, status) { 
       console.log(data); 
       }); 
});    
</script> 
</html> 

在控制檯我得到未定義req.body

我收到一個請求

不確定

請幫我解決這個問題。

回答

7

您將需要中間件從傳入流中讀取POST請求的正文,並將其從JSON解析爲Javascript對象。它不會僅自動結束於req.body。一個簡單的JSON體的通常中間件將使用body-parser middleware

const bodyParser = require('body-parser'); 

// other stuff here 

// read and parse application/json 
app.use(bodyParser.json()); 

app.post('/readTfile',function (req,res) { 
    console.log('i received a request'); 
    console.log(req.body); 
}); 

而且,對於這種中間件工作,並自動識別您發送JSON,你將不得不確保帖子已設置正確的內容類型。

+0

非常感謝。我添加了這個中間件,它工作。我在嘲笑我自己想念這個。再次感謝。 – sand

+0

@sand,如果它解決了您的問題,請接受答案 – lifeisfoo

+0

我正在嘗試,但它是要求等待4分鐘。 – sand