POSTなどを受け取る
なんかgistに残ってた、前に書いたコード?
var fs = require('fs'), http = require('http'), qs = require('querystring'), httpRouter = require('http-router'), server = http.createServer(), router = new httpRouter; router .get('/', function(req, res, next) { res.once('error', function(err) { res.writeHead(500); res.end(err); return; }); return next(); }) .get('/', function(req, res, next) { fs.createReadStream('./index.html').pipe(res); }) .get('/redirected', function(req, res, next) { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end('redirected'); }) .post('/xhr', function(req, res, next) { res.writeHead(200); res.end('asdf'); }) .post('/post', function(req, res, next) { var data = ''; function add() { var buf; buf = req.read(1); if (buf !== null) { data += buf; setImmediate(add); } } req.on('readable', function() { add(); }); req.once('end', function() { var obj = qs.parse(data); console.log(obj.textValue); console.log(obj.hiddenValue); res.writeHead(303, { 'Location': '/redirected' }); res.end(); process.nextTick(function() { req.removeAllListeners(); }); }); }); server.on('request', function(req, res) { if (!router.route(req, res)) { res.writeHead(501); res.end(); } }); server.listen(3000, function() { console.log('http://localhost:3000/'); });
<!DOCTYPE html> <meta charset="utf-8"> <title>index.html</title> <form action="/post" method="POST"> <input name="textValue" type="text" value="" placeholder="text"> <input name="hiddenValue" type="hidden" value="hidden value"> <input type="submit" value="submit"> </form> <button id="xhr">xhr</button> <script> document.addEventListener('DOMContentLoaded', function() { document.getElementById('xhr').addEventListener('click', function() { var xhr = new XMLHttpRequest(); xhr.open('POST', '/xhr'); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { alert(xhr.responseText); setTimeout(function() { xhr = xhr.onreadystatechange = null; }, 4); } }; xhr.send(null); }, false); }, false); </script>
これでPOSTを試していたらしい。