簡體   English   中英

如何在 Node.js 上的 Express.js 中獲取多個變量?

[英]How to get GET multiple variables in Express.js on Node.js?

我正在嘗試將表單數據從 html 頁面獲取到 Node Js 服務器。

我的 html 文件是index.html

 <body>

        <nav>
<ul>
<li>
  <a href="#" class="button add">Add Product</a>
  <div class="dialog" style="display:none">
  <div class="title">Add Product</div>
  <form action="" method="get">
    <input id = "name" name="name" type="text" placeholder="Product Name"/>
    <input name="code" type="text" placeholder="Product Code"/>
    <input name="category" type="text" placeholder=" Category"/>
    <input name="brand" type="text" placeholder="Brand"/>
<input type="submit" value="Ok"/>
  </form>
</div>
</li>
<li class="radio">
  <a href="#" class="button active"></a>

  <a href="#" class="button"></a>

  <a href="#" class="button"></a>
</li>
</ul>
</div>        
</nav>
<p></p>
    <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

        <script src="js/index.js"></script>




  </body>

提交表單后,服務器不執行任何操作,只需獲取包含所有詳細信息的 url

我的服務器是server.js

var express = require("express"),
    app = express(),
    bodyParser = require('body-parser'),
    errorHandler = require('errorhandler'),
    methodOverride = require('method-override'),
    hostname = process.env.HOSTNAME || 'localhost',
    port = parseInt(process.env.PORT, 10) || 4004,
    publicDir = process.argv[2] || __dirname + '/public';
var exec = require('child_process').exec;
var fs = require('fs');

//Show homepage
app.get("/", function (req, res) {
  res.redirect("/index.html");
  console.log("shubh ");
});
app.get("/index/", function (req, res) {
  res.redirect("/index.html");
  console.log("shubham ");
});

app.get("/index/:name", function (req, res){
  console.log("shubham batra");
   var keyword = req.query.code;
   console.log(keyword);
   //res.send('You sent the name "' + req.body.name + '".');
  console.log(res.body);
});
app.use(errorHandler({
  dumpExceptions: true,
  showStack: true
}));
//Search page
app.use(methodOverride());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(express.static(publicDir));
app.use(errorHandler({
  dumpExceptions: true,
  showStack: true
}));

console.log("Server showing %s listening at http://%s:%s", publicDir, hostname, port);
app.listen(port);

您的表單操作是 '',因此表單創建的 URL 將是 /?name=xxx&code=yyy 等

從您的路由來看,您似乎希望網址采用 /xxx?code=yyy 的形式。

使您的表單操作 '/search' 並添加以下 JS。

app.get("/search", function (req, res){
  console.log("shubham batra");
   var keyword = req.query.code;
   console.log(keyword);
   //res.send('You sent the name "' + req.query.name + '".');  
});

當您發出 get 請求時,將不會設置 request.body。

您可以根據需要使用多個:

var code = req.query.code;
var category = req.query.category;
var brand = req.query.brand;

req.query如果它的 GET 請求和req.body如果它的 POST。

更改app.get("/index/:name", function (req, res){

to app.get("/index/:name?", function (req, res){

您的路線將匹配 /index/ 和 /index/anyname 路線

並將表單操作更改為"/"或類似"/action"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM