无法使用GET方法获取个人资料页面?

时间:2020-02-01 02:25:47

标签: javascript node.js express url query-string

我正在使用Expressjs,我想在表单提交后在URL中显示用户输入,并使用URL中的名称将用户呈现给个人资料页面,因此我使用req.query和GET方法。 这是app.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)});

这是表格user.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 个答案:

答案 0 :(得分:1)

?‍?也许您可以在下面尝试以下代码:?

App.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看起来像下面的代码:>

user.ejs

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

如果您希望自己的网址看起来像这样:http://localhost:1001/profile?name=yourname,则只需在POST和{{1}上将方法GET更改为App.js }表单方法。

?已更新::如果您希望自己的网址如下所示:user.ejs,则可以使用以下代码更改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方法。

我希望它能对您有所帮助。

相关问题