2015-03-24 47 views
1

假設我想在/completed案例中獲取發佈數據到變量中。 我該怎麼辦? 我能夠檢索到request.on(「數據」...)的數據,但如果我登錄data到我的/completed的情況下,data是空的。NodeJS獲取發佈數據 - 無框架

var http = require('http'); 
http.createServer(function(request, response) { 
    var data = ""; 
    if(request.method == 'POST') { 
     request.on('data', function(chunk) { 
      console.log('Received data:', chunk.toString()); 
      data += chunk.toString(); 
     }); 
     request.on('end', function() { 
      console.log('Complete data:', data); 
     }); 
    } 
    switch (request.url) { 
     case "/": 
      response.writeHead(200, {'Content-Type': 'text/html'}); 
      response.write("<a href='/form'>Go to form</a>"); 
      response.end(); 
      break; 
     case "/form" : 
      response.writeHead(200, {'Content-Type': 'text/html'}); 
      response.write("<form method='POST' action='/completed'>"); 
      response.write("<input type='text' name='data1'/><hr/>"); 
      response.write("<input type='text' name='data2'/><hr/>"); 
      response.write("<input type='text' name='data3'/><hr/>"); 
      response.write("<input type='file' name='data4'/><hr/>"); 
      response.write("<input type='submit' value='Send'/>"); 
      response.end("</form>"); 
      break; 
     case "/completed": 
      console.log(request); 
      response.writeHead(200, {'Content-Type': 'text/html'}); 

      // var post = ? 

      response.end(); 
      break; 
     default: 
      response.writeHead(403, {'Content-Type': 'text/html'}); 
      response.end("Forbidden"); 
      break; 
    } 

}).listen(1337); 

結果

Received data: data1=dfs&data2=ds&data3=dvbcfgxrtgdw 
Complete data: data1=dfs&data2=ds&data3=dvbcfgxrtgdw 

回答

1

您可以:

app.use(express.bodyParser()); 

app.post('/completed', function(request, response){ 

    console.log(request.body.user.name); 
    console.log(request.body.user.email); 

}); 

假設你使用快遞。

否則,你將不得不使用req.on數據和結束事件:

if (req.method == 'POST') { 
    console.log("POST"); 
    var body = ''; 
    req.on('data', function (data) { 
     body += data; 
     console.log("Partial body: " + body); 
    }); 
    req.on('end', function() { 
     console.log("Body: " + body); 
    }); 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.end('post received'); 
} 

您還可以添加:

要檢索PARAMS。

Express是非常有用的,我喜歡用它來避免這些類型的代碼處理。

+0

且沒有明示? – 2015-03-24 23:10:01

+0

我認爲這絕對是可行的。 – RobertoNovelo 2015-03-24 23:18:19

+0

它的工作!謝謝 ;) – 2015-03-25 17:51:18