2014-11-08 50 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