невозможно получить страницу профиля, используя метод GET? - PullRequest
2 голосов
/ 01 февраля 2020

Я использую Expressjs Я хочу показать пользовательский ввод в URL после отправки формы и отобразить пользователя на странице профиля с именем в URL, поэтому я использую req.query и метод GET. Это приложение. js

var express = require('express');
var morgan = require('morgan');
var path = require('path');
var bodyParser = require('body-parser');

var port = process.env.port || 1001;

var app = express();

app.engine('.ejs', require('ejs').__express);
app.set('view engine', 'ejs');

app.set('views', path.join(__dirname, 'views'));

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(morgan('dev'));


app.get('/', (req, res) => res.render('user', { name: ''}));

app.put('/profile', function(req,res){
    var name = req.query.name;
    res.render('profile/'+ name , { name: name });
});

app.post('/', function(req, res){
    var name = req.query.name;
    res.render('profile/:name' , { name: name});    
});


app.listen(port, function(err){ if(err) throw err; console.log('Server running On Port : ' + port)});

Это пользователь формы. js

<form action="/profile/<%= name %>" method="GET">
    <input type="text" name="name">
    <button><a>Add</a></button>
</form>

Это страница профиля.

<h1>Hello <%= name %></h1>
<button><a href="/">Home</a></button>

1 Ответ

1 голос
/ 01 февраля 2020

?‍? Может быть, вы можете попробовать этот код ниже: 100

Приложение. js

var express = require('express');
var morgan = require('morgan');
var path = require('path');
var bodyParser = require('body-parser');

var port = process.env.port || 3000;

var app = express();

app.engine('.ejs', require('ejs').__express);
app.set('view engine', 'ejs');

app.set('views', path.join(__dirname, 'views'));

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use(morgan('dev'));

app.get('/', (req, res) => res.render('user', { name: ''}));

app.post('/profile', function(req,res){
    var { name } = req.body;
    res.render('profile', { name });
});

app.listen(port, function(err){ if(err) throw err; console.log('Server running On Port : ' + port)});

?‍? А теперь ваш, user.ejs будет выглядеть так, как показано ниже: 9

user.e js

<form action="/profile/<%= name %>" method="POST">
  <input type="text" name="name">
  <button><a>Add</a></button>
</form>

Если вы хотите, чтобы ваш URL был похож на это: http://localhost:1001/profile?name=yourname тогда вам нужно всего лишь изменить метод POST на GET для вашего App.js и для вашего user.ejs метода формы.

? Обновлено: Если вы хотите, чтобы ваш URL-адрес выглядел следующим образом: http://localhost:1001/profile/yourname, чем вы можете изменить маршрут /profile с помощью следующего кода:

app.get('/profile', function(req,res){
  const { name } = req.query;
  res.redirect('/profile/' + name.replace(/ /g, '-') );
});

app.get('/profile/:name', (req, res) => {
  const { name } = req.params;
  res.render('profile', { name : name.replace(/-/g, ' ') });
})

? Если вы используете указанный выше маршрут, убедитесь, что , в вашем user.ejs все еще используется метод GET.

Надеюсь, это поможет вам ?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...