在不知道您如何配置快速服务器的情况下很难查明问题的根源我已经根据您的上下文创建了一个示例。
app.js文件:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var engine = require('ejs-locals');
var querystring = require('querystring');
var drivers = [];
var passengers = [{name: 'Wilson'}, {name: 'Raul'}];
app.engine('ejs', engine);
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.get('/', function(req, res) {
res.render('driver');
});
app.post('/driver', function(req, res) {
var driver = {
name: req.body.name,
age: req.body.age
};
drivers.push(driver);
var data = {
driver: driver,
passengers: passengers
};
res.render('passengers', data);
});
app.get('/result', function(req, res) {
var data = {
driverName: '',
passengerNames: []
};
data.driverName = req.query.driverName;
data.passengerNames = data.passengerNames.concat(req.query.passengerNames);
res.render('result', data);
});
app.post('/api/passengers', function(req, res) {
var data = {
passengerNames: req.body.passengerNames,
driverName: req.body.driverName
};
var qs = querystring.stringify(data);
res.redirect('/result?' + qs);
});
app.listen(4040, function() {
console.log('server up and running at port 4040');
});
views/layout.ejs文件:
<!doctype html>
<html>
<head>
<title>Drivers App</title>
</head>
<body>
<div id="app">
<%- body %>
</div>
<script>
document.addEventListener('DOMContentLoaded', function(e) {
var btnNext = document.getElementById('btnNext');
btnNext.onclick = function(e) {
var allPassengers = document.querySelectorAll('input[type=checkbox]');
var selectedPassengers = [].filter.call(allPassengers, function(p) {
return p.checked;
});
var passengerNames = [].map.call(selectedPassengers, function(p) {
return p.value;
});
var driverName = document.getElementById('driverName').innerHTML;
var r = new XMLHttpRequest();
r.open('POST', '/api/passengers');
r.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
r.onreadystatechange = function() {
if (r.readyState != 4 || r.status != 200) return;
document.getElementById('app').innerHTML = r.responseText;
};
r.send(JSON.stringify({
passengerNames: passengerNames,
driverName: driverName
}));
};
});
</script>
</body>
</html>
views/driver.ejs文件:
<% layout('layout.ejs') -%>
<h1> Driver </h1>
<form method="POST" action="/driver">
<label>Name:</label>
<input id="name" name="name" type="text"/>
<br />
<label>Age:</label>
<input id="age" name="age" type="text"/>
<br />
<br />
<input type="submit" value="Submit" />
</form>
`views/passengers.ejs`
<% layout('layout') -%>
<h1> Driver </h1>
<p>Name: <span id="driverName"><%= driver.name%></span></p>
<h1> Passengers </h1>
<% passengers.forEach(function(p) {%>
<input type="checkbox" value=<%= p.name %> /> <%= p.name %> <br />
<% }); %>
<br />
<button id="btnNext">Next</button>
views/result.ejs文件:
<h1>Success!</h1>
<h2>Driver</h2>
<h3><%= driverName %></h3>
<br />
<h2>Selected Passengers</h2>
<% passengerNames.forEach(function(name) { %>
<h3><%= name%></h3>
<% }); %>