Причина не работает в том, что res.render
отобразит страницу на сервере и затем отправит ее клиенту.После этого вы просто снова загружаете HTML-код в память сервера с помощью JSDOM и модифицируете его в конце только что отброшенного запроса, который не влияет на то, что уже было отправлено клиенту * 1002.*.
Правильный способ сделать это - использовать язык шаблонов (есть из чего выбирать) с вашим сервером express.js для динамического рендеринга страницы и введения нужных значений в нужное место.,Затем вы можете просто передать переменные в res.render
, которые будут доступны при рендеринге вашего шаблона:
app.post('/signUp', urlencodedParser, function(req, res) {
console.log("sorry... this username is invalid!");
res.render('signUp', {
firstName: req.body.firstName,
secondName: req.body.secondName,
email: req.body.email,
error: "'" + req.body.username + "' is an invalid username...",
});
});
Например, если вы использовали Pug.js в качестве движка шаблонов, то вашСтраница регистрации может выглядеть примерно так (я не включил все форматирование, которое должно идти в CSS):
form(method='POST' action='/signUp')
div.form-group
label(for='firstName') First Name
input#firstName.form-control(type='text', name='firstName', value=firstName, required)
div.form-group
label(for='secondName') Second Name
input#secondName.form-control(type='text', name='secondName', value=secondName, required)
div.form-group
label(for='email') Email:
input#email.form-control(type='email', name='email', value=email, required)
div.form-group
label(for='username') Username
if error:
input#username.form-control(type='text', name='username', placeholder=error)
else:
input#username.form-control(type='text', name='username', placeholder='e.g.: miauMiau23 (this is the name your friends will identify you with')
div.form-group
label(for='password') Password:
input#passwordw.form-control(type='password' name='password')
button.btn.btn-primary(type='submit') Submit