2016-11-08 79 views
0

此問題標題已被編輯。原始標題是「我如何在表單中提交字符串並將其作爲url中的請求參數應用?」通過html表單獲取request.params?


想象一個簡單的服務器,其中接收字符串作爲路由參數,例如,與localhost:3000/hello它服務一個頁面包含'你好'。

這是很容易實現的,這裏是一個簡單Express服務器這樣做:

var express = require("express"); 
var app = express(); 

app.get("/:string", function(req, res) { 
    res.send(req.params.string); 
}); 

app.listen(3000); 

是否有可能通過一種形式來提供字符串?

回答

0

這不就是什麼隱藏的參數開始......?

<form action="http://www.example.com" method="GET"> 
    <input type="hidden" name="a" value="1" /> 
    <input type="hidden" name="b" value="2" /> 
    <input type="hidden" name="c" value="3" /> 
    <input type="submit" /> 
</form> 

我不會指望任何瀏覽器保留操作URL中的任何現有查詢字符串。

作爲規範(RFC1866,第46頁; HTML 4.x的部分17.13.3)狀態:

如果該方法的「get」該動作是HTTP URI,用戶代理取的值行動,附加一個'?'然後附加表單數據集,使用「application/x-www-form-urlencoded」內容類型進行編碼。 也許人們可以對action-URL進行百分比編碼,以嵌入問號和參數,然後交叉手指,希望所有瀏覽器都會像這樣保留該URL(並驗證服務器是否理解)。但我永遠不會依賴這一點。

順便說一下:它對於非隱藏的表單字段沒有什麼不同。對於POST,動作URL可以包含查詢字符串。經由

0
  • 將值分配給req.params一個html形式不是固有地可行。 表單可以輕鬆地將值分配給req.query

  • 定義爲在快速4.x API Reference描述REQ,則params和req.query:

req.params
此屬性是包含映射到指定的路線「參數」屬性的對象。例如,如果您有route/user /:名稱,則「name」屬性可用作req.params.name。該對象默認爲{}。

req.query
此屬性是包含路由中每個查詢字符串參數的屬性的對象。如果沒有查詢字符串,則它是空對象{}。

  • Arjan的回答在這個question援引隱藏式輸入這可能是在某些使用情況很有幫助。