2014-11-08 120 views
0

我正在寻找在EJS的equalivents,下面是PHP代码:
如何使用嵌入式Javascript(EJS)获取获取/发布URL参数?

<?php echo $_GET['name']; ?> 

<?php echo $_POST['name']; ?> 

我如何使用Node.js,Express和嵌入的JavaScript(EJS)。

+0

哦,对不起,这是一个误解,我想要EJS中的均衡代码,编辑我的问题。 – 2014-11-08 17:51:44

+0

相关:https://stackoverflow.com/questions/20130960/getting-the-url-parameters-in-an-ejs-template – 2014-11-08 19:47:26

+0

谢谢bebraw,但我已经看到了这个答案,它没有奏效。 – 2014-11-09 10:42:03

回答

0

您需要在Express中使用body-parser中间件。如果您使用快速生成器,则包含body-parser的代码将自动生成。

变种bodyParser =要求( '体解析器');

and

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

在您的“app.js”文件中准备好上述文件,您需要为路径文件夹指定路由处理。

您必须确保路由“register”和“registeration_complete”在本地服务器上可用。为此,请确保在“app.js”中有以下行设置它们:

var register = require('./ routes/register');

var registeration_complete = require('./ routes/registeration_complete');

app.use('/ register',register);

app.use('/ registeration_complete',registeration_complete);

请考虑在视图中存在一个名为“register.ejs”的表单。 “register.ejs”有一个名称为'tb_email'的输入文本框。示例如下图所示:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Contact</title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
    </head> 
    <body> 
    <h1>Contact</h1> 
    <p>Welcome, enter your email address.</p> 
    <form method="post" action="registeration_complete"> 
    <p><input type="text" size="12" name="tb_email"/> 
    <p><input type="submit" value="Register"/> 
    </form> 
    </body> 
</html> 

注:在上面输入标签,你应该有“名”。拥有“id”不会显示发布的数据。

表单的动作设置为“registeration_complete”,因此您现在需要在路径文件夹中定义名为“registeration_complete.js”的文件中的路由处理。

的“registeration_complete.js”的内容应如下:

如果您现在访问“注册”应用程序的网址,并输入一个电子邮件地址,它应该表现出你所输入的电子邮件地址在“registeration_complete.js”文件中使用上述“res.send”方法。

既然您确定路径中的帖子值可用,请在“”registeration_complete.js“文件中使用”res.render“,而不是上面为测试目的设置的”res.send“。您需要在渲染函数中传递想要使用EJS在视图中访问的变量。

的“registeration_complete.js”文件现在应该是这样的:

var express = require('express'); 
var router = express.Router(); 

/* GET home page. */ 
router.post('/', function(req, res, next) { 

    var tb_email=req.body.tb_email; 

    //res.send('Your email address is: '+ tb_email); 
    res.render('registeration_complete', {email:tb_email}); 
}); 

module.exports = router; 

现在,你必须做出“registeration_complete”查看可用的,所以你的“registeration_complete.ejs”文件中的“意见”文件夹应该看起来像这样。

<html> 
    <head> 
    <title>Registeration complete</title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
    </head> 
    <body> 
    <h1>Thank you for registering.</h1> 
    <p>Your email address is: <%= email %></p> 
    </body> 
</html> 

那一下。您可以访问本地服务器的“/注册”网址,并且您应该看到一个输入表单询问电子邮件。提交表单后,“registeration_complete.js”文件处理请求并呈现“registeration_complete.ejs”文件,该文件使用EJS输出输入的电子邮件地址。

+0

我的问题已经过去了一年,我找到了答案。但既然你花时间写下所有这些,我会很乐意接受它。我希望它能帮助别人。 – 2016-08-22 08:50:15

+0

谢谢@LightFlow :-) – Vibhu 2016-08-23 13:08:41